{"id":14279,"url":"\/distributions\/14279\/click?bit=1&hash=4408d97a995353c62a7353088166cda4ded361bf29df096e086ea0bbb9c1b2fc","title":"\u0427\u0442\u043e \u0432\u044b\u0431\u0435\u0440\u0435\u0442\u0435: \u0432\u044b\u0435\u0445\u0430\u0442\u044c \u043f\u043e\u0437\u0436\u0435 \u0438\u043b\u0438 \u0437\u0430\u0435\u0445\u0430\u0442\u044c \u0440\u0430\u043d\u044c\u0448\u0435?","buttonText":"","imageUuid":""}

Взгляд венчурного инвестора на Блокчейн | 06: Как работает майнинг (но есть нюанс)

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

Секундочку, а не маловат ли диапазон для Nonce?

Да, действительно маловат. Ведь вся сеть майнеров умеет рассчитывать 160 миллионов триллионов хэшей в секунду. Поэтому пробежать весь диапазон Nonce от 0 до 4 миллиардов и взять хэш-функцию 4 миллиарда раз сеть может за время, меньшее одной миллиардной доли секунды. Конечно, сеть не работает как одно целое – многие операции повторяются. Но даже если взять крупнейший пул майнеров Antpool, который работает согласованно, у них сконцентрировано 15% всего хэшрейта сети – это 24 млн TH/cек. Величина того же порядка.

Но если Antpool пробегает весь допустимый диапазон Nonce за одну миллиардную долю секунды, то как же получается, что вся сеть «добывает» блок на протяжении целых 10 минут? Все решается просто – одного «пробега» всего диапазона Nonce недостаточно для решения криптографической задачи. Помните, я писал, что единственная часть блока, которую можно менять вручную – это Nonce? Так вот, это не совсем так. Есть еще 2 части блока, которые могут меняться.

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

Нам помогут транзакции

Поэтому есть еще одна часть блока – набор транзакций. В блокчейне Биткоина сегодня каждый блок содержит в среднем 2 тысячи транзакций (пересылок биткоинов между участниками сети). И число этих транзакций ограничено допустимой величиной блока в 1 Мб. На самом деле число транзакций, ожидающих добавления в блок, больше. И майнер может выбирать транзакции, которые он хочет добавить в блок. Понятно, что сначала майнер выберет максимальное число транзакций, которые предусматривают выплату ему вознаграждения (Tx fee).

Если майнер пробежал весь диапазон Nonce от 0 до 4 млрд, но решение задачи не было найдено, то майнер уберет одну самую дешевую транзакцию и поменяет ее на самую дорогую из тех, что оставались вне блока, и повторит процедуру. Любая рекомбинация транзакций приводит к изменению содержания всего блока, а значит и хэш от блока полностью изменится. Это позволяет заново пробежать весь диапазон Nonce – вдруг решение найдется. И так можно повторять снова и снова, пока не закончится секунда. Потом таймер переставляется на 1 секунду, и всё можно повторить заново.

Сегодня число транзакций, ожидающих добавления в блок, составляет от 3 до 5 тыс. Если вспомнить комбинаторику, то выбрать 2 тыс. транзакций из 3 тыс. возможных можно числом способов примерно равным 10 в степени 829 (число с 829 нулями). Это дает более чем достаточный потенциал для расчетов Nonce с огромным (фактически бесконечным) запасом на будущее.

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

0
1 комментарий
Сергей Серков

А почему вообще происходит такая ситуация, что пробежав весь диапазон Nonce майнер не находит решение задачи? Если представить, что в блоке находится всего одна запись, а в MemPool ничего нет, и при этом не находится решение задачи, то блок в таком случае не добавится? Или такая ситуация невозможна и для одной записи решение будет гарантированно найдено?)

Ответить
Развернуть ветку
-2 комментариев
Раскрывать всегда