Когда вы изучаете криптовалюты, довольно часто вы набредаете на такое странное слово как "хеш". Что это такое, и зачем он нужен?
Если кратко, то хеш можно представить в виде такой "магической" машинки, которой на вход можно подать любые данные, любого размера (в том числе и пустые), затем нажать кнопку, и она выдаст на выходе некую строку, заранее заданного (и всегда одинакового) размера.
Кроме этого, у машинки есть следующие свойства:
1) Если подавать на вход одни и те же данные, на выходе всегда будет появляться одна и та же строка;
2) Если изменить в данных хотя бы один байт (пусть даже остальные гигабайты данных не изменятся), строка будет абсолютно иной;
3) Зная, что выдала машинка на выходе абсолютно никак (кроме перебора всех вариантов) нельзя угадать, что подано на ее вход;
4) Вероятность того, что различные данные на входе выдадут одну и ту же строку на выходе существует, но она так мала, что ей можно пренебречь (и чем она меньше, тем лучше хеш).
Хешей, обладающих всеми этими признаками было придумано очень много, но самые известные из них - это, наверное MD5, SHA1 и SHA256. Первые два уже не используются, а вот третий - как раз и применяется в биткоине.
Почему не используются первые два? Все дело в пунктах 3/4 указанных выше. Увидев выход машинки, можно попытаться подобрать, что именно было подано на ее вход, перебирая все варианты. И когда-нибудь (согласно пункту 4) вы найдете вход, дающий на выходе ту же строку.
И хотя эта вероятность так мала, что "ей можно пренебречь", она постоянно возрастает со временем. Просто потому, что компьютеры ускоряются, и перебирают варианты быстрее, а значит найти нужный вариант также становится быстрее. Если мы сможем найти любой вариант достаточно быстро, то хеш перестает быть "стойким", и его заменяют на другой. Именно поэтому хеши MD5 и SHA1 уже не используются.
Зачем же нужны эти хеши, зачем нужна эта "магическая машинка"? Помните, я говорил, что каждые десять минут вы можете получить "халявных" биткоинов, решив сложную математическую задачу. Так вот, теперь я могу сказать, какую же именно задачу вам нужно решить.
1) Вам нужно собрать блок из всех транзакций, случившихся за эти десять минут. Эти транзакции вам будут присылать другие участники сети (логично, именно за это вам и дадут биткоины);
2) В этом блоке есть некое поле, размером в несколько байт, которое вы можете заполнить абсолютно любым числом, которое вам по душе;
3) От этого блока нужно будет вычислить хеш по алгоритму SHA256 - подать блок на вход "магической машинке", и считать ее выход;
4) Если первые несколько байт данного выхода равны нулю, и вы сделали это первым из всех - поздравляем, вы победили, отправляйте в сеть получившийся блок, биткоины ваши. Сколько именно первых байт должно быть равно нулю постоянно меняется, адаптируясь под общую мощность сети - чем больше в ней компьютеров, тем больше нулей должно быть;
5) Если получившийся хеш не имеет достаточного числа нулей, или вообще, даже не начинается на ноль - вы меняете число, выбранное в пункте 2, и повторяете процесс;
6) Пункты 1-5 повторяются, либо пока вы не найдете нужное число, либо пока его не найдет кто-то другой. Во втором случае биткоины получает он, а вы создаете новый блок, и пробуете снова.
Если вам понравилась данная статья, то поставьте ей лайк, и не забудьте подписаться на этот канал, чтобы узнавать новости о криптовалютах самым первым.