Как работает блокчейн?
База каждого блокчейна строится на конкретном алгоритме майнинга, эту цепь блоков формирующего. Для наглядности, рассмотрим один из самых известных вариантов – Биткоин. Образующий его цепь алгоритм называется «SHA-256». Или «Secure hash algorithm 256 bits». Изначальные данные могут быть любыми – текстом, последовательностью цифр, файлами разного размера и разрешения. Но в процессе работы алгоритма они все трансформируются в определённый «хэш», размер которого всегда один и тот же – 256 бит.
Одна и та же начальная информация будет всегда перерабатываться в один и тот же хэш – но только в пределах одной цепи блоков. Если же изменится хотя бы один бит начальной информации – результат будет уже другим.
Кроме того, алгоритм работает по принципу односторонней функции. А это означает, что знание итогового хэша не позволяет определить начальные данные. Их можно только угадать, исходя из комбинации нулей и единиц, что примерно равно 2 в степени 256. А шанс этот – невероятно мал – поэтому алгоритм считается безопасным, что отображено в его названии.
Рассмотрим конкретный пример работы этого алгоритма
Допустим, есть два человека – Семён и Николая. И Семён собирается перевести своему знакомому 5 биткоинов. Для этого от передаёт сообщение о транзакции всем майнерам сети Биткоин. В этом сообщении содержатся данные о публичном адресе Николая, на которые осуществляется перевод, о сумме перевода, о личной цифровой подписи Семёна и о его открытом ключе. Что важно – цифровая подпись формируется на основе закрытого ключа Семёна, поэтому каждый участник сети может быть уверен, что запрос исходит именно от него. И что именно ему принадлежат биткоины, о которых идёт речь.
Убедившись, что транзакция реальна (это важный момент, но о нём – чуть позже), майнеры помещают данную информацию в блок, вместе с другими подобными данными о транзакциях. И начинают майнить – то есть – реализовывать алгоритм «SHA-256» и высчитывать хэш. Полученный результат обязательно должен содержать некоторое количество нулей в своём начале. Оно определяется общей «сложностью» сети, напрямую зависящей от её мощности. Непостоянной величины, зависящей от количества участников и их вычислительных мощностей.
И для того, чтобы получить в процессе выполнения алгоритма нужное количество нулей, участникам сети приходится добавлять к изначальным данным так называемые «nonce number». Куски двоичного кода, получаемые в процессе PoW - майнинга. Но это добавление меняет итоговый хэш, поэтому майнерам приходится подбирать такую комбинацию «nonce number», чтобы получить нужный.
Как только у кого-то получается найти решение задачи – «добыть блок» - он передаёт его всем остальным участникам сети. Там происходит повторная проверка и добавление его в общую цепочку. Что важно – в добытом блоке содержится ещё и информация о хэше предыдущего, что обеспечивает логическую связь между ними и формирование цепочки блоков – тот самый блок-чейн. Эта проверка, добавление и отслеживание связи формируют так называемое «доказательство выполненной работы» - критерий достоверности получаемого результата.
Наибольшим доверием пользуются самые длинные цепочки блоков. То есть – с самой большой проделанной вычислительной работой. И если кто-то решит изменить хотя бы один блок цепочки – это повлияет на весь дальнейший отрезок, поскольку в изменяемом блоке изменится хэш, а из-за этого придётся всё пересчитывать заново. Что реально, но требует более 50 процентов вычислительной мощности всей сети. Поэтому целенаправленные хакерские атаки, направленные на изменение содержания блоков, называют «51% атаками» - этой мощности достаточно, чтобы создать новую цепочку с якобы «достоверной» проделанной работой.
Существует и другой критерий достоверности – так называемый Proof-of-Stake (PoS) или «подтверждение доли владения». Он не настолько требователен к вычислительным мощностям и используемой электроэнергии, поэтому позволяет масштабировать цепочки для большего количества активных участников. Более подробно об этом – в соответственной статье.
Вот примерно так и работает сеть блокчейн-Биткоин. Другие сети могут использовать несколько иные принципы, но в целом – суть остаётся такой же.