Если Вы не прячетесь в дремучем лесу, то, вероятно, слышали про Bitcoin и технологию блокчейн (англ. blockchain). Даже люди, которые никогда не пользовались криптовалютой или не понимают, как она работает, сейчас говорят о ней, ведь это тренд.
Большинство объяснений в сети технического характера, и пытаясь понять, что к чему, рядовой пользователь запутывается еще больше. Простое объяснение простыми словами для простых людей в адаптированном переводе статьи Мохіта Маморіа (Mohit Mamoria), опубликованной на LinkedIn.
Есть ли необходимость в сложной системе блокчейн?
Начнем не с определения технологии блокчейн, а из понимания проблемы, которую она решает. Представьте, что Ваш лучший друг Саша путешествует за границей. На пятый день отпуска он звонит и говорит: «Друг, одолжи немного денег. Я все потратил». Вы отвечаете: «Дружище, без проблем. Сейчас все сделаю». И звоните своему менеджеру в банк: «Ольга Андреевна, пожалуйста, перечислите 10 000 грн с моего счета на счет Саши». Ваш менеджер открывает бухгалтерскую книгу (для простоты понимания мы говорим про некомпьютеризированные системы), проверяет остаток на счету, чтобы узнать, есть ли у Вас достаточно средств. Вы обеспеченный человек, поэтому перевод такой суммы простое дело. Менеджер делает запись в бухгалтерской книге про перечисление средств.
Вы звоните Саше и сообщаете о переводе. Что только что произошло? И Вы, и Саша доверили банку управление своими деньгами. Реального движения физических векселей для перевода денег не было. Потребовалась лишь запись в бухгалтерской книге. Или точнее запись в книге, которой ни Вы, ни Саша не владеете, и которую ни Вы, ни Саша не контролируете. Именно в этом заключается проблема существующих систем. Чтобы выразить доверие друг другу мы зависим от посредников. Может возникнуть вопрос: «Так в чем же проблема? Мы зависели от таких посредников годами». Проблема в том, что их не так много. Чтобы создать хаос в обществе, достаточно чтобы один человек/организация сделала ошибку, намеренно или нечаянно.
Что произойдет, если и бухгалтерская книга, в которую была занесена запись о переводе, сгорит? Что делать, если менеджер Вашего счета ошибочно указал 15 000 грн вместо 10 000? Что делать, если он сделал это намеренно? Может ли существовать система, в которой возможно переводить деньги без необходимости обращаться в банк? Задумайтесь на минутку, что означает перевод средств это просто запись в бухгалтерской книге. Можно ли вести книгу самим, а не поручать это дело посреднику? Ответом на этот вопрос и стала технология блокчейн способ самостоятельно управлять «бухгалтерской книгой», а не зависеть от кого-то другого.
Главное требование этого метода должно существовать достаточно людей, которые не хотят зависеть от посредников. Только тогда эта группа может самостоятельно вести «бухгалтерскую книгу».
«Если эта идея найдет поддержку, будет иметь смысл ввести что-то типа Bitcoin. Если достаточное количество людей мыслит одинаково, все дело становится самореализационным пророчеству, так объяснил суть технологии еще в 2009 году Сатоши Накамото (Satoshi Nakamoto), или доктор Крейг Райт (Craig Wright), который называет себя изобретателем криптовалюты Bitcoin»
Для нашего примера будем считать, что десять человек хотят отказаться от услуг банков или посредников. По взаимному согласию у каждого из них есть информация о состоянии счета других лиц, но ни один из них не знает личности других.
Раньше мы доверяли посреднику, верили, что все, что посредник записал в бухгалтерской книге, останется без изменений. В децентрализованной системе нашего примера единственным гарантом является печать. Процесс «опечатывание» листа среди профессионалов, работающих с блокчейн, называется «mining» (майнинг).
Рассмотрим, как происходит процесс опечатывания. Представьте волшебную машину с толстыми стенами. Если положить внутрь машины слева ящик с определенным содержанием, то машина выдаст нам ящик дело с другим содержанием.
Допустим, вы кладете слева число 4, а справа машина выдает комбинацию букв dcbea. Как машина превратила число 4 на такую комбинацию? Никто не знает. Однако, этот процесс необратим, то есть из комбинации dcbea нельзя вычислить, что положили в машину слева. Но каждый раз, когда Вы будете давать машине число 4, она всегда будет отдавать комбинацию dcbea. Попробуем другое число, например, 26. На этот раз мы получаем 94c8e. Следовательно, комбинации на выходе могут быть алфавитно-многочисленные.
Мы знаем, что у машины есть свойство, которое не дает нам возможности выяснить, что было введено слева, анализируя результат дело. В то же время, всегда легко проверить, когда прогнозируемые входные данные дают нужный результат. Помните, что машина каждый раз выдает одну и ту же комбинацию для того самого числа. Важнейшая характеристика таких волшебных машин: имея исходные данные, очень трудно вычислить входные данные. Но, имея входные и выходные данные, достаточно легко проверить, соответствуют ли они друг другу.
Используем эту волшебную машину, чтобы опечатать лист. Представьте, что у Вас есть две шкатулки. В первой содержится число 20 893. Вопрос: «Какое число надо прибавить к числу в первой ячейке, чтобы при вводе в машину, на выходе получить комбинацию, которая начинается с трех нулей?»
Единственный способ выяснить это, вводить числа в машину, пока не получим нужный результат. Скажем, что после нескольких тысяч попыток мы вычисляем, что это число 21 191. Добавив его к числу 20 893 (21 191 20 893 42 084), на выходе получим комбинацию, которая удовлетворяет наши требования. В таком случае число 21 191 становится печатью числа 20 893. Предположим, что есть лист с номером 20 893. Чтобы опечатать этот лист чтобы никто не мог изменить его содержание, мы разместим на нем значок 21 191. Лист опечатано, как только на него нанесен номер опечатывания.
Если кто-то захочет проверить, были ли изменены данные, все, что необходимо сделать, это добавить данные листа к номеру опечатывания и ввести их в волшебную машину. Если на выходе получаем комбинацию, которая начинается с трех нулей, содержание листа не менялось. Если комбинация на выходе не соответствует нашим требованиям, можно выбросить лист, потому что его данные были изменены. Аналогичным образом опечатываются все листы, которые в конце концов будут упорядочены в папках.
Примечание: комбинация начинается с трех нулей, это лишь упрощенный пример функции хеширования. На самом деле задача намного сложнее.
Вернемся к нашему примеру. На листе записаны сведения про десять денежных переводов и свободного места больше нет. Необходимо опечатать лист, чтобы начать новый. Участники группы начинают высчитывать номер опечатывания и первое лицо, которому удалось вычислить его, сообщает этот номер другим. Каждый участник проверяет, получаем заданные исходные данные при вводе номера опечатывания и данных листа в волшебную машину. Если номер верный, все участники группы маркируют ним свои листы и складывают каждый в свою папку. Что произойдет, если №7 при вводе номера опечатывания не получит заданный результат? Возможные причины:
Независимо от причины, у №7 есть только один выход выбросить свой лист и скопировать данные в кого-то другого, чтобы иметь возможность положить лист в папку. Если он этого не сделает, то не сможет в дальнейшем записывать информацию про другие переводы, таким образом, перестает быть частью группы.
Почему все тратят ресурсы на вычеты номера опечатывания, если известно, что кто-то другой занимается исчислением и можно просто подождать? Работает система стимулов – каждый, кто является участником блокчейн, имеет право на вознаграждение. Первый, кто вычисляет номер, получает вознаграждение за свои усилия. Скажем, если №5 вычисляет номер опечатывания листа, он получает вознаграждение в 10 евро и его счет увеличивается на 10 евро, но при этом не уменьшается баланс на счета других участников группы. Именно таким образом появилась валюта Bitcoin. Это была первая валюта для осуществления переводов в блокчейн (то есть в распределенных «бухгалтерских книгах»). Чтобы люди выполняли определенную работу в сети, обеспечивая ее функционирование, им предоставлялось вознаграждение в виде Bitcoin.
Когда у многих людей есть монеты Bitcoin, их стоимость растет, другие люди тоже хотят иметь криптовалюту, что опять повышает ее стоимость, что опять увеличивает количество желающих обладать ею, и т.д. Как только все участники группы кладут лист в папку, они получают новый пустой лист и повторяют весь процесс — и так бесконечно. Это и есть схема функционирования технологии блокчейн. Представьте, что один лист – это блок (block), а папка с листами – это цепочка (chain) листов (блоков), так и получаем блокчейн (blockchain).
Представьте себе, что в папке уже пять листов, каждый со своим номером опечатывания. Вдруг кто-то решит вернуться ко второму листу и изменить информацию о переводах в свою пользу? Номер опечатывания позволит любому обнаружить непоследовательность переводов, верно? Что делать, если этот человек вычислит новый номер опечатывания измененных переводов и опечатает лист по-новому? Для избежания такой ситуации при расчете номера опечатывания используется один трюк.
Помните, в нашем примере было две шкатулки: одна с числом 20 893, а другая – пустая, ее надо было вычислить? На самом деле, для расчета номера опечатывания в блокчейн используется не два, а три ящика. Два – по заданным данным, третий – для исчисления. И когда содержимое всех трех ящиков добавляют и вводят в машину, ответ с правой стороны должна соответствовать необходимым условиям. Мы знаем, что в одном ящике содержится список переводов, во втором будет указан номер опечатывания, а в третьем ящике содержится исходная комбинация волшебной машины для предыдущего листа. Этот маленький трюк гарантирует, что каждая следующая страница зависит от предыдущей. И если кто-то захочет изменить данные опечатанной страницы, такому лицу также придется изменить содержание и номер опечатывания всех страниц после этого, чтобы не нарушить цепочку.
Если один человек в группе решит обмануть других и изменить данные в блокчейне (в папке с листами с перечнем переводов), ему придется изменить информацию нескольких листов и вычислить новые номера опечатывания для этих листов. А мы знаем, как трудно их вычислить. Поэтому одно нечестное лицо не может обмануть девять честных. Происходит следующее: начиная с листа, данные которого пытается изменить наш лжец, он создает новую цепочку в сети, но эта цепочка никогда не сможет догнать «честную» цепочку, просто потому, что усилия и скорость одного человека не могут сравниться со скоростью и усилиями девяти человек. Таким образом, самая длинная цепочка в сети – «честная» цепочка.
Что случится, если вместо одного человека шесть человек окажутся лжецами? Этот случай называется «атакой 51%». Если большинство людей в сети станут обманывать других, протокол намеренно перестанет работать — и это единственная «Ахиллесова пята» технологии блокчейн. Система построена на предположении, что пользователи, в большинстве своем — честные. Вот, собственно, и все. Ничего сложного.
Также читайте: Что такое криптовалюта...