У хэша есть одно очевидное свойство: он односторонний. То есть по хэшу невозможно подобрать изначальное сообщение (только перебором всех вариантов – так и работает майнинг; но об этом позже). Да, у некоторых типов хэшей была такая проблема, что у разных сообщений мог получится одинаковый хэш, но сейчас это либо уже решено, либо не играет особой роли.
ГЛАВНОЕ, ВЫ ПОНЯЛИ, ЧТО ЭТА ФУНКЦИЯ РАБОТАЕТ ТОЛЬКО В ОДНУ СТОРОНУ.
Теперь к самому блокчейну. Как использовать подписи и хэши? Представим себе одноклассников, которые хотят завести виртуальную валюту. Они ведут запись на школьной доске: сколько у кого было монет и кто кому сколько отправил, ставят подписи для подтверждения сделок, и все эту доску видят. Потом приходит учитель и говорит: «Вы тут совсем распоясались, поди уже и клей друг другу толкаете втихаря». Стирает все записи мокрой тряпкой и насаждает веру в светлое будущее.
Ученикам такая херня не нравится. Им нужна своя валюта, и так, чтобы с доски никто не мог ничего стереть. И на одной общей бумажке тоже писать нельзя – тот, у кого она находится, может там наисправлять всего. Поэтому у каждого бумажка будет своя, но у всех одинаковая. На перемене все сверяют записи и добавляют новые – кто кому сколько передал и сколько теперь монет у каждого.
Как понять, хватает ли у Васи денег на передачу Маше? Надо перечитать весь журнал, и станет понятно: вот 10 монет Вася получил от Пети на прошлой неделе, а 40 ему вчера перечислил Олег. После этого сделок не было, поэтому вписываем в журнал новую строчку: «Забрать 50 монет у Васи и добавить 50 монет Маше», – заверяем васиной подписью и дописываем хэш. Да, проверять все – это долго, но у каждого же есть компьютер! Он сразу поймет, если подпись не та или история неправильная.
ИСПОРЧЕННУЮ СДЕЛКУ ОН В ЖУРНАЛ ЗАПИСЫВАТЬ НЕ СТАНЕТ, А ПРОСТО ВЫКИНЕТ КАК ФАЛЬШИВУЮ.
Совокупность сделок на одной странице назовем блоком, допишем в конец хэш всего блока, чтоб не проверять страницу заново (а сверить только хэш) и начнем новую страницу-блок. Цепочка таких блоков – это и есть блокчейн.
Осталось только понять, кто заполняет страницу на перемене, чтобы раздать всем остальным (просто для справки – у биткоина эта «перемена» каждые 10 минут). Для этого все решают задачку по нахождению «красивого» хэша с нулями впереди. Если вы еще помните, что такое хэш, то станет ясно, что задача это не просто трудная, но и абсолютно бессмысленная (ведь для подтверждения подлинности не имеет значения, как именно выглядит подпись и красива ли она, а речь именно об этом). Решение требуется лишь для того, чтобы случайно определить победителя. Ведь если блок будет все время оформлять кто-то один, он сможет, например, чьи-то сделки подло не учитывать.
Сложность задачи при этом