{"id":14271,"url":"\/distributions\/14271\/click?bit=1&hash=51917511656265921c5b13ff3eb9d4e048e0aaeb67fc3977400bb43652cdbd32","title":"\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u043d\u0430\u0442\u0438\u0432\u043e\u043a \u0438 \u0441\u043f\u0435\u0446\u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0432 vc.ru \u2014 \u043d\u0430\u0439\u0434\u0438\u0441\u044c!","buttonText":"","imageUuid":""}

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

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

Как раз благодаря тому, что есть майнинг, сеть может обходиться без посредников. По сути, присоединение новой транзакции требует от сети затрат энергии на решение криптографической задачи. То есть не получится просто добавить в Блокчейн транзакцию – надо еще потратить ОЧЕНЬ много реальных денег, например, на оплату электричества, необходимого для решения этих крипто-задач. В итоге мошенникам попросту невыгодно мошенничать, игра не стоит свеч.

Что такое хэш-функция

С Блокчейном неразрывно связан майнинг, а с ним – криптографическая задача. Если понять, что это такое, то все встанет на свои места. Но сначала нужно уяснить что такое хэш-функция.

В криптографии существует понятие односторонней или хэш-функции. Это функция вида F(X) = H, где X – любой набор символов неограниченной длины. А H – это просто большое число. В блокчейне Биткоина принят алгоритм хэш-функции SHA256, в котором H имеет длину 256 бит (число от 0 до 2^256). Поскольку в цифровом мире все что угодно представляется в виде набора символов и цифр, можно взять любой цифровой объект (текст, картинки, видеофайлы и т.д.), применить к нему функцию F(X) и получить длинное число. Что интересно: размер текста или картинки может быть какой угодно большой, а число всегда будет одинаковой длины.

По сути, хэш-функция – это «отпечаток пальца» любого цифрового объекта. Как и человек, этот объект может быть сколь угодно сложен, но его отпечаток пальца всегда уникален. И по этому отпечатку любой цифровой объект можно однозначно идентифицировать.

Важно вот что: из любого X можно быстро получить H, но обратное неверно. Если у вас есть результат хэш-функции, то вы не можете получить исходный текст, картинку и т.д. Также есть другое важное свойство: если исходный объект X изменится даже совсем немного, то хэш-функция H изменится очень сильно.

Вот вам пример. Я взял полный текст произведения Льва Николаевича Толстого «Война и мир» (более 3 миллионов символов) и посчитал от него SHA256. После этого я изменил во всем произведении только одну букву в названии – поменял «Война и мир» на «Война и лир».

Как видите, изменение всего 1 буквы из более чем 3 миллионов приводит к полностью другому результату алгоритма SHA256. Можете сами попрактиковаться: вот расчет SHA256 онлайн, вот текст бессмертного произведения. Запомните это свойство – оно принципиально важно для майнинга.

Кстати, многие удивляются, почему в этом хэше встречаются не только цифры, но и буквы, и почему его длина не 256, а всего лишь 64. Отвечаю – это потому что число обычно показывается в 16-ричной системе счисления (об этом можно почитать здесь; а тут есть конвертер из 10-тичной в 16-ричную систему). Это делается из соображений удобства, чтобы его длина была не слишком длинной.

Криптографическая задача

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

Сначала алгоритм Блокчейна берет некоторое число M за минимальную границу. Майнеру предлагается посчитать хэш от всего блока и сравнить этот хэш с минимальной границей M. Помните, что хэш – это тоже число? Если итоговый хэш меньше границы (H < M), то задача считается решенной. А что если H > M? Тогда майнеру нужно немного изменить сам блок и посчитать SHA256 еще раз. В этом случае результат хэш-функции изменится очень сильно.

Меняем сам блок

Как изменить блок? В нем есть только одна величина, которую можно менять как угодно – это Nonce, число от 0 до 4 миллиардов. Его-то майнер и будет последовательно изменять, применяя SHA256 снова и снова. Изменение Nonce на единицу приведет к полному изменению всей хэш-функции, и ее опять сравнивают с минимальной границей М. В итоге после миллиардов операций майнеру повезет, и он найдет тот самый Nonce, при котором хэш функция от всего блока будет меньше M. Все, задача решена. Принципиально здесь то, что каждый раз хэш меняется непредсказуемо – нет никакой закономерности между тем, как изменился Nonce, и тем, как изменится результат хэш-функции. По крайней мере пока что никому не удалось такую закономерность найти. Поэтому все майнят простым перебором Nonce.

С ростом числа майнеров увеличивается общая мощность сети. А значит они начинают решать криптозадачу быстрее, чем за 10 минут. Тогда алгоритм Блокчейна попросту снижает М, и найти решение задачи становится сложнее. Но, поскольку вся сеть увеличилась, то решение все равно находится за те же 10 минут. С ростом сети растет и энергия, затрачиваемая на поиск решения, а это как раз то, что нужно. Потому что «взломать» сеть становится все сложнее. Это может попробовать сделать только тот, кто обладает более чем 51% всей мощности сети, но и то, не то чтобы прямо взломать (об этом в следующем посте). Как видите, чем больше в сети майнеров и чем сложнее криптографическая задача, тем Блокчейн более устойчив к мошенникам. То есть у этой системы есть сильная отдача от масштаба, а также сетевой эффект.

А сеть майнеров вообще большая?

Мощность майнинга в блокчейне Биткоина измеряется в числе операций взятия хэша в секунду. Сегодня мощность всей сети – 160 милионов TH / сек (смотрите график здесь). А один TH – это триллион хэшей. То есть вся сеть умеет считать 160 миллионов триллионов хэшей за 1 секунду. И потребляет энергии как средняя европейская страна.

Вокруг этого происходят постоянные споры о том, правильно ли тратить ресурсы человечества «впустую» на решение каких-то придуманных задач, ведь в Африке голодают дети. Но, во-первых, масштаб проблемы несколько преувеличен. А во-вторых, есть альтернативные способы коллективного подтверждения транзакций – например, Proof-of-Stake. Они вообще не требуют майнинга. Но об этом чуть позже. А пока что в следующем посте мы посмотрим, насколько Блокчейн устойчив к ошибкам и что такое атака 51%.

0
7 комментариев
Написать комментарий...
Overstroy Building

Хорошо написано, доступно, интересно читать

Ответить
Развернуть ветку
В А

На словах ты Лев Толстой!

Ответить
Развернуть ветку
Отдел информационных технологий

Хах. Мы тоже в детском саду так шутили.

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Отдел информационных технологий

Желаю вам не вляпаться. И да, земля плоская.

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Сергей Серков

Огромное спасибо за такое интересное и понятное объяснение!

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