Если Вы не прячетесь в дремучем лесу, то, вероятно, слышали о Bitcoin и технологию блокчейн (англ. blockchain). Даже люди, которые никогда не пользовались криптовалютою или не понимают, как она работает, сейчас говорят о ней, ведь это – тренд. Большинство объяснений в сети – технического характера, и пытаясь понять, что к чему, рядовой пользователь запутывается еще больше. Простое объяснение простыми словами для простых людей – в адаптированном переводе статьи Мохіта Маморіа (Mohit Mamoria), опубликованной на LinkedIn.
Есть ли необходимость в сложной системе блокчейн?
Начнем не с определения технологии блокчейн, а из понимания проблемы, которую она решает. Представьте, что Ваш лучший друг Саша путешествует за границей. На пятый день отпуска он звонит и говорит: «Друг, одолжи немного денег. Я все потратил». Вы отвечаете: «Дружище, без проблем. Сейчас все сделаю». И звоните своему менеджеру в банк: «Ольга Андреевна, пожалуйста, перечислите 10 000 грн с моего счета на счет Саши».Ваш менеджер открывает бухгалтерскую книгу (для простоты понимания мы говорим о некомпьютеризированные системы), проверяет остаток на счету, чтобы узнать, есть ли у Вас достаточно средств. Вы – обеспеченный человек, поэтому перевод такой суммы – простое дело. Менеджер делает примерно такую запись в бухгалтерской книге:
07.08.2017, 11:03
Вы ————–Саша 10 000 грн.
Вы звоните Саше и сообщаете о переводе. Что только что произошло? И Вы, и Саша доверили банку управление своими деньгами. Реального движения физических векселей для перевода денег не было. Потребовался лишь запись в бухгалтерской книге. Или точнее – запись в книге, которой ни Вы, ни Саша не владеете, и которую ни Вы, ни Саша не контролируете. Именно в этом заключается проблема существующих систем. Чтобы выразить доверие друг другу мы зависим от посредников. Может возникнуть вопрос: «Так в чем же проблема? Мы зависели от таких посредников годами». Проблема в том, что их не так много. Чтобы создать хаос в обществе, достаточно чтобы один человек/организация сделала ошибку, намеренно или нечаянно.
Что произойдет, если и бухгалтерская книга, в которую была занесена запись о переводе, сгорит? Что делать, если менеджер Вашего счета ошибочно указал 15 000 грн вместо 10 000? Что делать, если он сделал это намеренно? Может ли существовать система, в которой возможно переводить деньги без необходимости обращаться в банк? Задумайтесь на минутку, что означает перевод средств — это просто запись в бухгалтерской книге. Можно ли вести книгу самим, а не поручать это дело посреднику? Ответом на этот вопрос и стала технология блокчейн —способ самостоятельно управлять «бухгалтерской книгой», а не зависеть от кого-то другого.
Как работает блокчейн
Главное требование этого метода – должно существовать достаточно людей, которые не хотят зависеть от посредников. Только тогда эта группа может самостоятельно вести «бухгалтерскую книгу».
«— Если эта идея найдет поддержку, будет иметь смысл ввести что-то типа Bitcoin. Если достаточное количество людей мыслит одинаково, все дело становится самореализационым пророчеством, — так объяснил суть технологии еще в 2009 году Сатоши Накамото (Satoshi Nakamoto), или доктор Крейг Райт (Craig Wright), который называет себя изобретателем криптовалюти Bitcoin.»
Для нашего примера будем считать, что десять человек хотят отказаться от услуг банков или посредников. По взаимному согласию у каждого из них есть информация о состоянии счета других лиц, но ни один из них не знает личности других.
- Пустая папка. У каждого представителя нашей группы есть пустая папка. В будущем все эти десять человек будут добавлять листы в своих пустых папок. И эта коллекция листов сформирует «бухгалтерскую книгу», в которой ведутся записи о денежные переводы.
- Денежный перевод. Все участники нашей группы «сидят» с чистыми листами и ручками. Каждый готов записать данные любого денежного перевода, что происходит внутри системы. Предположим, что участник №2 хочет отправить 100 грн участнику №9. Для этого участник №2 заявляет всем: «Я хочу передать 100 грн участнику №9. Пожалуйста, сделайте все соответствующую запись в своих книгах». Все проверяют, достаточно ли средств у участника №2, чтобы перечислить 100 грн участнику №9. Если это так, каждый записывает данные о переводе на своем чистом листе. Считается, что перевод осуществлен.
- Переводы продолжают происходить.Со временем у большего количества людей из нашей группы возникает потребность перевести деньги другим и каждый раз они объявляют об этом другим. Как только человек слышит о переводе, он/она записывает информацию о нем на своем листе. Так продолжается, пока у каждого участника группы не заканчивается свободное место на листе. Допустим, что на листе достаточно пространства, чтобы записать информацию о десяти переводов. После десятого перевода всех заканчивается свободное место на листе и наступает время положить этот лист в папку, достать новый и повторить процедуру, начиная с пункта 2.
- Защита использованного листа. Прежде чем мы положим лист в папку, необходимо «опечатать» его уникальной печатью, которую согласовывают все участники группы. Опечатав лист таким образом, мы гарантируем, что после того, как лист попал в папку, никто и никогда (не сегодня, не завтра и не через год) не может внести в него никаких изменений. Если все участники группы доверяют печати, понятно, что все участники доверяют содержания листа. Именно опечатывания листа является важнейшим элементом этого метода.
Раньше мы доверяли посреднику, верили, что все, что посредник записал в бухгалтерской книге, останется без изменений. В децентрализованной системе нашего примера единственным гарантом является печать. Процесс «опечатывание» листа среди профессионалов, работающих с блокчейн, называется «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%». Если большинство людей в сети станут обманывать других, протокол намеренно перестанет работать — и это единственная «Ахиллесова пята» технологии блокчейн. Система построена на предположении, что пользователи, в большинстве своем — честные. Вот, собственно, и все. Ничего сложного.
Источник: LinkedIn