Выбрать главу

Как понять, хватает ли у Васи денег на передачу Маше? Надо перечитать весь журнал, и станет понятно: вот 10 монет Вася получил от Пети на прошлой неделе, а 40 ему вчера перечислил Олег. После этого сделок не было, поэтому вписываем в журнал новую строчку: «забрать 50 монет у Васи и добавить 50 монет Маше», заверяем Васиной подписью и дописываем хэш. Да, проверять всё – это долго, но у каждого же есть компьютер! Он сразу поймёт, если подпись не та или история неправильная. Испорченную сделку он в журнал записывать не станет, а просто выкинет как фальшивую.

Совокупность сделок на одной странице назовём блоком, допишем в конец хэш всего блока, чтоб не проверять страницу заново (а сверить только хэш), и начнём новую страницу-блок. Цепочка таких блоков – это и есть блокчейн.

Осталось только понять, кто заполняет страницу на перемене, чтобы раздать всем остальным (просто для справки – у биткоина эта «перемена» каждые 10 минут). Для этого все решают задачку по нахождению «красивого» хэша с нулями впереди. Если вы ещё помните, что такое хэш, то станет ясно, что задача это не просто трудная, но и абсолютно бессмысленная (ведь для подтверждения подлинности не имеет значения, как именно выглядит подпись и красива ли она, а речь именно об этом). Решение требуется лишь для того, чтобы случайно определить победителя. Ведь если блок будет всё время оформлять кто-то один, он сможет, например, чьи-то сделки подло не учитывать.

Сложность задачи при этом настолько высока, что решается она только перебором всех вариантов и хэшированием каждого из них, а перебирают варианты участники одновременно. У кого-то компьютер помощней, ну у того и шансов побольше. Если участников становится слишком много и красивый хэш находится слишком быстро, то новая задачка выбирается потруднее (и наоборот); об этом все договорились заранее.

Заглянем немного глубже. Чтобы получить «красивый» хэш, ребята добавляют в заголовок каждого блока какое-то случайное число и только потом подсчитывают контрольную сумму. Число это называется nonce[14]. Из-за того, что хэширование выдаёт фактически случайную цифру из блока данных, изменив всего лишь одну цифру (или букву) в блоке, мы получим совершенно новый его хэш. Целью майнинга и является подбор этого (случайного) числа таким образом, чтобы хэш блока начинался с определённого количества нулей. Другими словами, хэш должен быть меньше нужного нам параметра target (цель), который и определяет сложность соревновательного процесса. Ведь чем меньше эта цель, тем меньше должно быть искомое число – и тем больше у него нулей впереди. Таким образом, сложность регулируется очень легко.

Все желающие решать эту задачу называются майнерами, а решение записывается на страницу вместе со всеми операциями. Это делается для того, чтобы в будущем какой-нибудь хитроумный китаец не пришёл и не сказал: «Ребята, вот на самом деле правильный журнал, у меня всё подсчитано», – тогда ему придётся предъявить решения всех подделанных задачек сразу, а это нереально. Хотя будем честны: если у него под контролем большинство компьютеров в сети – то возможно.

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

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

Разберём поподробнее.

1.4. Почему это работает плохо

Скажем прямо: блокчейн – технология крутая. Но недостатков у неё хватает. Для их исправления в системе и проводятся так называемые хардфорки – разветвления или перезагрузки. Поэтому нельзя сказать, что все участники всем всегда довольны. Да, блокчейн решает проблему доверия без единого центра, но пока не очень эффективно. Почему?

вернуться

14

Nonce – Number, that can only be used once, число, которое нельзя называть. Ну то есть которое можно использовать только один раз.