Криптвоюматика 4.1. Стань сыном маминой подруги - Алексей Викторович Марков
Шрифт:
Интервал:
Закладка:
Теперь к самому блокчейну. Как использовать подписи и хэши? Представим себе одноклассников, которые хотят завести виртуальную валюту. Они ведут запись на школьной доске: сколько у кого было монет и кто кому сколько отправил, ставят подписи для подтверждения сделок, и все эту доску видят. Потом приходит учитель и говорит: «Вы тут совсем распоясались, поди уже и клей друг другу толкаете втихаря». Стирает все записи мокрой тряпкой и насаждает веру в светлое будущее.
Ученикам такая херня не нравится. Им нужна своя валюта, и так, чтобы с доски никто не мог ничего стереть. И на одной общей бумажке тоже писать нельзя – тот, у кого она находится, может там наисправлять всего. Поэтому у каждого бумажка будет своя, но у всех одинаковая. На перемене все сверяют записи и добавляют новые – кто кому сколько передал и сколько теперь монет у каждого.
Как понять, хватает ли у Васи денег на передачу Маше? Надо перечитать весь журнал, и станет понятно: вот 10 монет Вася получил от Пети на прошлой неделе, а 40 ему вчера перечислил Олег. После этого сделок не было, поэтому вписываем в журнал новую строчку: «забрать 50 монет у Васи и добавить 50 монет Маше», заверяем Васиной подписью и дописываем хэш. Да, проверять всё – это долго, но у каждого же есть компьютер! Он сразу поймёт, если подпись не та или история неправильная. Испорченную сделку он в журнал записывать не станет, а просто выкинет как фальшивую.
Совокупность сделок на одной странице назовём блоком, допишем в конец хэш всего блока, чтоб не проверять страницу заново (а сверить только хэш), и начнём новую страницу-блок. Цепочка таких блоков – это и есть блокчейн.
Осталось только понять, кто заполняет страницу на перемене, чтобы раздать всем остальным (просто для справки – у биткоина эта «перемена» каждые 10 минут). Для этого все решают задачку по нахождению «красивого» хэша с нулями впереди. Если вы ещё помните, что такое хэш, то станет ясно, что задача это не просто трудная, но и абсолютно бессмысленная (ведь для подтверждения подлинности не имеет значения, как именно выглядит подпись и красива ли она, а речь именно об этом). Решение требуется лишь для того, чтобы случайно определить победителя. Ведь если блок будет всё время оформлять кто-то один, он сможет, например, чьи-то сделки подло не учитывать.
Сложность задачи при этом настолько высока, что решается она только перебором всех вариантов и хэшированием каждого из них, а перебирают варианты участники одновременно. У кого-то компьютер помощней, ну у того и шансов побольше. Если участников становится слишком много и красивый хэш находится слишком быстро, то новая задачка выбирается потруднее (и наоборот); об этом все договорились заранее.
Заглянем немного глубже. Чтобы получить «красивый» хэш, ребята добавляют в заголовок каждого блока какое-то случайное число и только потом подсчитывают контрольную сумму. Число это называется nonce[14]. Из-за того, что хэширование выдаёт фактически случайную цифру из блока данных, изменив всего лишь одну цифру (или букву) в блоке, мы получим совершенно новый его хэш. Целью майнинга и является подбор этого (случайного) числа таким образом, чтобы хэш блока начинался с определённого количества нулей. Другими словами, хэш должен быть меньше нужного нам параметра target (цель), который и определяет сложность соревновательного процесса. Ведь чем меньше эта цель, тем меньше должно быть искомое число – и тем больше у него нулей впереди. Таким образом, сложность регулируется очень легко.
Все желающие решать эту задачу называются майнерами, а решение записывается на страницу вместе со всеми операциями. Это делается для того, чтобы в будущем какой-нибудь хитроумный китаец не пришёл и не сказал: «Ребята, вот на самом деле правильный журнал, у меня всё подсчитано», – тогда ему придётся предъявить решения всех подделанных задачек сразу, а это нереально. Хотя будем честны: если у него под контролем большинство компьютеров в сети – то возможно.
В итоге мы имеем новую крутую систему децентрализованных операций, где все доверяют всем – потому что все всегда могут всё проверить. Историю сделок нельзя переписать и исправить что-то задним числом. Участников может быть очень много, и надёжность системы от этого только вырастет. По подписи нельзя вычислить её владельца – если только он сам не заявит о её принадлежности. А если не учитывать траты сил на постоянное дописывание журнала сделок, всё ещё и бесплатно.
Но есть и занимательные побочные эффекты. Во-первых, становится удобно торговать оружием и давать взятки, потому что схему трудно отследить и прикрыть, никаких саквояжей с меченой колбасой тут нет. Во-вторых, любую сделку невозможно оспорить или отменить – если ты выслал кому-то свою крипту по ошибке, то это навсегда. И в-третьих, вся информация дублируется 100500 раз, что немного перебор. Это только то, что на поверхности.
Разберём поподробнее.
1.4. Почему это работает плохо
Скажем прямо: блокчейн – технология крутая. Но недостатков у неё хватает. Для их исправления в системе и проводятся так называемые хардфорки – разветвления или перезагрузки. Поэтому нельзя сказать, что все участники всем всегда довольны. Да, блокчейн решает проблему доверия без единого центра, но пока не очень эффективно. Почему?
1. За счёт открытости анонимность не такая уж и анонимная, как кажется. Если все транзакции можно проверить, а вы перевели немного бабла своему дилеру, то он узнает, сколько денег у вас в кошельке и куда вы их деваете. Конечно, для этого ему надо знать, кому принадлежат и другие кошельки, но это тоже со временем решается. При этом он может узнать всё не только о прошлых, но и о всех будущих платежах с известного ему кошелька. Есть даже контора, которая этим специально занимается – и среди её клиентов, конечно, спецслужбы и прочие подозрительные лица.
2. Децентрализация не так уж велика. Да, копии реестра хранятся в каждом полноценном кошельке, общего сервера нет, поэтому закрыть всё сразу нельзя. Но майнеры, обеспечивающие функционирование сети, объединены в пулы. Сейчас для добычи требуется настолько большая вычислительная мощность, что по одному намайнить, например, биткоин просто невозможно. А 70 % всех майнинговых пулов биткойна (по мощности) сейчас находятся в Китае. А там ведь повсюду проклятые коммунисты! Кто знает, что скажет партия? То же самое можно сказать и про другие криптовалюты. Некоторые из них