Некоторые вопросы об особенностях майнинга биткойнов

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

Насколько я знаю, это работает так:

Учитывая строку шестнадцатеричных значений, которая составляет 1024 бита (или 256 шестнадцатеричных значений, или 128 байтов), скажем,

0x000000020597ba1f0cd423b2a3abb0259a54ee5f783077a4ad45fb6200000218000000008348d1339e6797e2b15e9a3f2fb7da08768e99f02727e4227e02903e43a42b31511553101a051f3c00000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000

И 256-битное (или 64 шестнадцатеричных значения, или 32 байта) значение, известное как цель

0x00000000FFFF0000000000000000000000000000000000000000000000000000

Сначала мы меняем местами каждый 32-битный фрагмент, поэтому в итоге получаем

0x020000001fba9705b223d40c25b0aba35fee549aa477307862fb45ad180200000000000033d14883e297679e3f9a5eb108dab72ff0998e7622e427273e90027e312ba443105315513c1f051a00000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000280

Читаем последние 64 бита (или 16 шестнадцатеричных значений или 8 байт)

0x0000000000000280

Что равно 640 битам или 80 байтам.

Итак, мы берем первые 640 бит (или 160 шестнадцатеричных значений, или 80 байтов) строки шестнадцатеричных значений с заменой байтов.

0x020000001fba9705b223d40c25b0aba35fee549aa477307862fb45ad180200000000000033d14883e297679e3f9a5eb108dab72ff0998e7622e427273e90027e312ba443105315513c1f051a00000000

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

#scroll to right to see the last 8 bits incrementing
    new_hash = SHA256('0x020000001fba9705b223d40c25b0aba35fee549aa477307862fb45ad180200000000000033d14883e297679e3f9a5eb108dab72ff0998e7622e427273e90027e312ba443105315513c1f051a00000000')
    
    new_hash = SHA256('0x020000001fba9705b223d40c25b0aba35fee549aa477307862fb45ad180200000000000033d14883e297679e3f9a5eb108dab72ff0998e7622e427273e90027e312ba443105315513c1f051a00000001')
    
    new_hash = SHA256('0x020000001fba9705b223d40c25b0aba35fee549aa477307862fb45ad180200000000000033d14883e297679e3f9a5eb108dab72ff0998e7622e427273e90027e312ba443105315513c1f051a00000002')
    
#    .. so on

Если мы найдем new_hash, который меньше или равен целевому,

# one of the new_hash is 
new_hash = 0x00000000fffe0000000000000000000000000000000000000000000000000000
# which is is lower than target

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

Где я это прочитал: https://en.bitcoin.it/wiki/Getwork

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

Чтобы иметь возможность получить значение ниже этой цели случайным образом, шанс на успех будет равен 1 из 4 295 032 833 (4,3 миллиарда).

Значение nonce, которое мы можем изменить, составляет 32 бита или 4294967296.

Таким образом, ожидаемое значение получения его сразу после попытки каждого одноразового значения составляет (4294967296/4295032833), или в основном 1.

Но это ожидаемое значение, будут случаи, когда будет испробовано каждое значение nonce, но мы все равно не доберемся до цели.

Вопрос 1 . Как такие программы, как майнер NiceHash или другие инструменты для майнинга, справляются с подобными ситуациями?

Вот еще одна проблема: компьютерам потребуется некоторое время, чтобы опробовать каждое значение nonce, потому что их 4 миллиарда. Вопрос 2 : Есть ли ограничение по времени, в течение которого майнер может угадать и проверить, прежде чем данная работа больше не будет «принята»?

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

Вопрос 3 : Какова обычно сумма вознаграждения за каждую акцию в долларах США? Я предполагаю, что это варьируется от пула к пулу, но какова обычно будет финансовая стоимость?

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

Не настоящий ответ, а просто к вашему сведению, NiceHash не майнит BTC. Он добывает различные альткойны (которые можно добывать без специального оборудования; процесс для каждого разный) для пула, зачисляет их на ваш счет после конвертации в BTC, а затем позволяет вывести BTC. Биткойн сам по себе не может быть добыт с помощью универсального оборудования с 2013 года или около того. Сейчас это все специализированные ASIC.

Ответы (1)

Вопрос 1. Как такие программы, как майнер NiceHash или другие инструменты для майнинга, справляются с подобными ситуациями?

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

Вот еще одна проблема: компьютерам потребуется некоторое время, чтобы опробовать каждое значение nonce, потому что их 4 миллиарда. Вопрос 2: Есть ли ограничение по времени, в течение которого майнер может угадать и проверить, прежде чем данная работа больше не будет «принята»?

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

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

Вопрос 3: Какова обычно сумма вознаграждения за каждую акцию в долларах США? Я предполагаю, что это варьируется от пула к пулу, но какова обычно будет финансовая стоимость?

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

Биткойн-сеть в настоящее время обрабатывает около 100 квинтиллионов хэшей в секунду. Общий доход от майнинга составляет около 56 миллионов долларов в день. Таким образом, стоимость 4 миллиардов хэшей составляет примерно 0,0000025 центов.