Что такое биткойнские шахтеры действительно решаются?
Как и в случае с добычей полезных ископаемых, что действительно решают биткойнские шахтеры? Я читал, что они решают хеши, но что это значит. Можем ли мы понять, что они решают? Может ли кто-нибудь привести пример того, что видит машина для биткойнов?
4 ответа
Они пытаются найти случайный nonce (несколько случайных данных), который переходит в блок и заставляет блок иметь (SHA256) хеш, который (в двоичном) начинается с определенного количества 0. Чем больше нулей, тем более редкий хэш. Хороший хеш-результат не предсказуем, поэтому вам нужно много раз попробовать найти хорошего нечего.
Количество нулей зависит от того, насколько сложно предполагать найти блок. В биткойне он настраивается на новый блок каждые 10 минут (в среднем, учитывая скорость, с которой найдены предыдущие блоки).
Интересно: потому что хеши непредсказуемы, неважно, как меняется nonce! В большинстве случаев это просто число, отсчитываемое от 0!
Вот упрощенный эскиз проблемы extreme , но он должен дать довольно хорошее представление о проблеме.
Данные:
Это хэш последнего блока (сокращен до 30 символов):
00000000000001adf44c7d69767585
Это хэши нескольких действительных транзакций, ожидающих включения (укороченные).
5572eca4dd4
db7d0c0b845
И это хэш одной специальной транзакции, которую вы только что создали, которая дает 25BTC (текущая награда) для себя:
916d849af76
Создание следующего блока:
Теперь давайте используем грубое приближение того, что может выглядеть новый блок (реальный использует двоичный формат). Он содержит хэш предыдущего блока и хэши этих трех транзакций:
00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76--
Теперь давайте делать добычу вручную! Наша цель состоит в том, чтобы завершить этот блок с помощью nonce (кусок мусора), так что хэш нового блока начинается с 13 нулей (учитывая предыдущий хэш, кажется, что 13 нулей - это текущая трудность!).
Mining (попытка завершить этот блок):
Давайте попробуем с помощью nonce = 1 и вычислим хэш блока (я использую алгоритм хеша md5, но Bitcoin использует double sha256):
> echo "00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76--1" | md5sum
8b9b994dcf57f8f90194d82e234b72ac
Не повезло, хэш не начинается с 0 ... Попробуем с помощью nonce = 2
> echo "00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76--2" | md5sum
5b7ce5bcc07a2822f227fcae7792fd90
Не повезло ...
â € |
Если мы продолжаем до тех пор, пока не будет = 16, мы получим первый первый нуль.
> echo "00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76--16" | md5sum
03b80c7a34b060b33dd8fbbece79cee3
Для nonce = 208 мы получаем два ведущих нуля!
> echo "00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76--208" | md5sum
0055e55df5758517c9bed0981b52ce4a
Продолжайте, как это ... Если вы, наконец, найдете хэш, у которого есть 13 ведущих нолей ... вы победитель! Другие шахтеры теперь построят ваш блок, у вас только 25BTC.
Но вам нужно быть быстрым!
Вернуться к шагу 1â € |
Если кому-то удастся создать блок до того, как вы это сделаете, вам придется начинать с самого начала с хэша нового блока (одного из победителей).
Ниже приводится описание глобальной статистической игры, которая воспроизводится каждые 10 или около того минут. Интервал игры контролируется трудностью , в котором говорится, сколько «хэшей» необходимо за интервал.
Другими словами, сложность difficulty
и target
определяет «шансы дома» против вашего шанса получить выигрышный хэш SHA. nonce
- это область с «царапинами».
Каждый хэш потребляет электричество и испускает тепло, что требует дополнительного охлаждения.
Это то, что делается с каждым хешем:
Шаг 1
На высоком уровне программное обеспечение шахтёра берет список активных транзакций, а затем группирует их во что-то, называемое «блоком».
Или более точно указано: Программное обеспечение майнера скрывает все транзакции в сводном виде, называемом «ключом merkle», и хеширует его, что является репрезентативным для транзакций.
Шаг 2
Затем программное обеспечение Mining превращает это в двоичный формат, называемый Заголовок блока , который также ссылается на предыдущие блоки (также называемые цепочкой).
Field Purpose Updated when... Size (Bytes)
Version Block version number You upgrade the software and 4
it specifies a new version
hashPrevBlock 256-bit hash of the previous A new block comes in 32
block header
hashMerkleRoot 256-bit hash based on all A transaction is accepted 32
the transactions in the block
Time Current timestamp as seconds Every few seconds 4
since 1970-01-01T00:00 UTC
Bits Current target in compact format The difficulty is adjusted 4
Nonce 32-bit number (starts at 0) A hash is tried (increments) 4
Шаг 3:
Аппарат майнера меняет небольшую часть этого блока, называемую «nonce».
Шаг 4:
Заголовок блока hashed и по сравнению с Target , как будто это просто большое количество, например, 10 000 000> 7 000 000 (реальные числа намного больше и в гексагоне). Цель сжимается и сохраняется в каждом блоке в поле, называемом битами.
Расширенная цель выглядит следующим образом:
Target 0000000000000083ef00000000000000000000000000000000000000000000000
И цель состоит в том, чтобы хэш SHA256 блока меньше это значение. В приведенном ниже примере «83ee
» меньше, чем «83ef
»
Чтобы упростить эту концепцию, вы можете забросить цель, сославшись на ведущие нули (как здесь объясняется другой ответ). Вот пример:
Hash 0000000000000083ee9371ddff055eed7f02348e4eda36c741a2fc62c85bc5cf
Этот предыдущий хэш был с сегодняшнего дня и имеет 14 ведущих нулей. Давайте сравним это с тем, что было необходимо 3 года назад с блоком 100 , который имеет 8 ведущих нулей.
Hash 00000000a8ed5e960dccdf309f2ee2132badcc9247755c32a4b7081422d51899
Резюме
Итак, в конце дня все шахтер делает:
- Возьмите заголовок блока как входной
- Измените Nonce
- Проверьте, что заголовок
меньше цели. Если это так, вы выигрываете. - Перейдите к шагу 2 (или перейдите к шагу 1, если кто-то выиграл блок)
Хотите узнать, что делает биткойн-QT, когда он находит блок? Я разместил его здесь. . Информация в этом сообщении поможет вам понять, что произошло.
Mining дает возможность достичь консенсуса относительно того, как должен выглядеть журнал транзакций и знать, что никто не обманывает.
Это нетехническое определение майнинга.
«Властью» для двойных расходов является цепочка. Блок-цепочка состоит из истории всех блоков в блок-цепочке плюс следующий блок транзакций. Субсидия вознаграждения в настоящее время составляет 25 BTC для стороны, которая представляет следующий блок. Но эй ... вы бы хотели, чтобы 25 BTC (стоит в настоящее время около 825 долларов), как и я, как и все остальные. Итак, как вы это делаете, чтобы я не мог обманывать и требовать блокировать себя?
Хорошо, вы ввели систему, с которой вы и я должны конкурировать. Это то, что делает доказательство работы - это делает так, что, когда я заявляю о награде, легко доказать, что я действительно занимался этой работой. Поэтому для меня, чтобы иметь 2% -ный шанс на решение блока, мне нужно поставить 2% от добычи. У меня нет возможности разместить менее 2% всей работы и все равно решать блоки как минимум в 2% случаев (в среднем).
Таким образом, при отправке блока транзакций все сверстники проверяют, что не было двойных расходов, что требовалось правильное количество субсидий и что заявитель действительно потратил работу, необходимую для этого решения. С этими тремя правилами, тогда нет необходимости быть центральным органом, управляющим процессом или способным контролировать результат.