Что такое биткойнские шахтеры действительно решаются?

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

123 голоса | спросил Patoshi パトシ 28 FebruaryEurope/MoscowbThu, 28 Feb 2013 21:53:44 +0400000000pmThu, 28 Feb 2013 21:53:44 +040013 2013, 21:53:44

4 ответа


32

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

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

Интересно: потому что хеши непредсказуемы, неважно, как меняется nonce! В большинстве случаев это просто число, отсчитываемое от 0!

ответил Lodewijk 21 Jpm1000000pmTue, 21 Jan 2014 19:33:58 +040014 2014, 19:33:58
133

Вот упрощенный эскиз проблемы 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â € |

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

ответил Stéphane Gimenez 28 FebruaryEurope/MoscowbThu, 28 Feb 2013 22:46:45 +0400000000pmThu, 28 Feb 2013 22:46:45 +040013 2013, 22:46:45
61

Ниже приводится описание глобальной статистической игры, которая воспроизводится каждые 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»

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

Вот пример блока с транзакциями, которые вы можете просмотреть на BlockChain.info. Посмотрите в верхнем правом углу веб-страницы для этого хэша:

   Hash 0000000000000083ee9371ddff055eed7f02348e4eda36c741a2fc62c85bc5cf

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

   Hash 00000000a8ed5e960dccdf309f2ee2132badcc9247755c32a4b7081422d51899

Резюме

Итак, в конце дня все шахтер делает:

  1. Возьмите заголовок блока как входной
  2. Измените Nonce
  3. Проверьте, что заголовок
    меньше цели. Если это так, вы выигрываете.
  4. Перейдите к шагу 2 (или перейдите к шагу 1, если кто-то выиграл блок)

Хотите узнать, что делает биткойн-QT, когда он находит блок? Я разместил его здесь. . Информация в этом сообщении поможет вам понять, что произошло.

ответил CHI Coder 007 28 FebruaryEurope/MoscowbThu, 28 Feb 2013 22:50:16 +0400000000pmThu, 28 Feb 2013 22:50:16 +040013 2013, 22:50:16
12

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

Это нетехническое определение майнинга.

«Властью» для двойных расходов является цепочка. Блок-цепочка состоит из истории всех блоков в блок-цепочке плюс следующий блок транзакций. Субсидия вознаграждения в настоящее время составляет 25 BTC для стороны, которая представляет следующий блок. Но эй ... вы бы хотели, чтобы 25 BTC (стоит в настоящее время около 825 долларов), как и я, как и все остальные. Итак, как вы это делаете, чтобы я не мог обманывать и требовать блокировать себя?

Хорошо, вы ввели систему, с которой вы и я должны конкурировать. Это то, что делает доказательство работы - это делает так, что, когда я заявляю о награде, легко доказать, что я действительно занимался этой работой. Поэтому для меня, чтобы иметь 2% -ный шанс на решение блока, мне нужно поставить 2% от добычи. У меня нет возможности разместить менее 2% всей работы и все равно решать блоки как минимум в 2% случаев (в среднем).

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

ответил Stephen Gornick 1 MaramFri, 01 Mar 2013 03:59:26 +04002013-03-01T03:59:26+04:0003 2013, 03:59:26

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132