Перейти к основному содержанию
BeginPC.ru

Компьютер для новичков и не только

blockchain

Весь интернет бурлит новостями о блокчейн и криптовалютах, газеты пишут статьи, а правительства всего мира собирают совещания по поводу нового явления в нашей жизни. При этом большое количество простых людей не понимают, что это такое, как в прочем и многие люди дающие свои комментарии в прессе. Давайте исправим данную ситуацию и рассмотрим технологию блокчейн простым языком понятным чайникам без всякой математики и прочих заумностей. Чтобы любой человек в независимости от образования смог понять принципы ее работы. Конечно это потребует серьезных упрощений, но сама идея будет понятна.

Прежде чем мы перейдем непосредственно к объяснению блокчейна, сделаем небольшое пояснение. Современный человек постоянно взаимодействует с различными базами данных, даже если не отдает себе в этом отчет. Ведь в упрощенном виде это просто набор информации по определенной теме структурированный определенным образом для возможности поиска, добавления и удаления данных. Таким образом обращаясь за получением свидетельства о собственности на квартиру, машину, свидетельства о рождении и так далее мы имеем дело с базой данных.

В настоящее время принята централизованная система ведения баз данных, то есть имеется кто то, кто уполномочен вести данную базу данных (реестр), а все остальные обращаются к нему в случае необходимости получить, отредактировать, добавить или удалить данные. Например, Госреестр ведет базу данных прав собственности на недвижимое имущество. ЗАГС ведает записями актов гражданского бракосочетания, а ваш банк ведет ваши счета и учитывает денежные средства на них.

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

В противовес централизованному подходу существует децентрализованный подход к ведению баз данных или по-другому распределенные базы данных. Смысл в том, что нет единого центра ведущего учет, да и сама база не хранится в одном месте, а находится у всех заинтересованных сторон одновременно. Таким образом, все имеют полную копию базы данных и имеют право вносить в нее изменения. Такой подход решает некоторые недостатки централизованного решения, но одновременно порождает новые проблемы, в том числе теперь любой может вносить в нее любые изменения.

По этой причине распределенные базы данных не имели широкого распространения. В 2009 году некто известный под именем Сатоши Накамото предложил решение данной проблемы призвав на помощь математику и криптографию. Кто этот человек и существует ли он реально до сих пор неизвестно, все попытки установить его личность не к чему не привили. Возможно это даже группа лиц, скрывающихся за данным псевдонимом. Он не придумал ничего принципиально нового, но смог объединить уже существующие на тот момент технологии в стройную систему, заложившую основу нашего будущего и вызвавшую немалый ажиотаж во всем мире.

Ему удалось обеспечивающей нормальную работу однораноговой сети в условиях, когда никто никому не доверяет. Именно эта проблема не имела раньше красивого решения. Это достигается за счет строгой математики, положенной в ее основу и полностью исключающей влияние человека, другими словами ее невозможно обмануть, подкупить или запугать.

Технология блокчейн на простом примере

Технология получила название blockchain, что можно перевести на русский язык как цепочка блоков. Часто ее упоминают как синоним биткоину, первой цифровой валюте созданной на основе этой технологии. Это не совсем верно, блокчейн это технология которая может применяться во многих сферах жизни, а Bitcoin и остальные криптовалюты это просто частные случаи этой технологии.

Проще всего ее будет понять на простом условном примере связанным опять-таки с деньгами. Допустим группа людей оказалась на необитаемом острове и через некоторое время у них возникла потребность в собственной денежной системе. На общем собрании они решили, что каждый человек получает 100 стартовых монет, но в реальности их у них не было и взять их физически было негде. Тогда они решили, что монеты будут виртуальны, и чтобы знать у кого сколько денег и кто кому сколько должен будут вести учет всех операций с ними.

Тут возникла проблема, они не смогли выбрать человека, которому бы полностью доверяли, ведь от росчерка его пера зависело бы сколько у кого будет денег. Поэтому было решено воспользоваться разработкой Сатоши Накомото и сделать распределенную систему учета движения денежных средств без единого центра. Договорились следующим образом. Каждый записал себе на лист бумаги список всех людей на острове и поставил напротив каждого имени 100 монет. Это отправная точка, а дальше будут по каждому человеку отнимать его траты и плюсовать его доходы. Данный лист они назвали блоком и присвоили ему номер один.

В течении дня они договорились сообщать друг другу обо всех своих тратах (транзакциях) с помощью записок со своей подписью. Допустим Ира хочет заплатить 10 монет Павлу за связку банан, для этого она пишет соответствующую записку со своей подписью, которую остальные жители записывают к себе и передают дальше. Чтобы система исправно работала, необходимо сделать некоторые проверки.

Нужно проверить кому принадлежит подпись, а также придется проследить все входящие и исходящие движения монет на счету Иры. Может у нее есть только 5 монет или она имеет отрицательный баланс, и она не может соответственно потратить 10 монет. А в друг она решила смошенничать и одновременно отправила эти деньги Наде, так называемая проблема двойных трат. Впрочем, мошенником может оказаться кто-то другой, написав записку от имени Иры, что она якобы оплатила ему 30 монет.

Чтобы исключить все эти негативные варианты, требуется выполнить определенные проверки. Для начала нужно убедиться, что ее действительно написала Ира для этого проверяется ее подпись. Дальше требуется проследить все движения денежных средств на счету Иры с самого начала и убедиться, что требуемая сумма у нее имеется. Только после этого можно учитывать данную транзакцию. Хотя даже в этом случае нет гарантий, что деньги у нее имеются, возможно она их уже потратила, но сведения об этом к нам еще не дошли. Поэтому пока это не подтвержденная транзакция, чтобы признать ее подтвержденной требуется выполнить определенные условия, об этом будет дальше. Все это приходится делать для каждой операции с деньгами на острове.

Придумали способ облегчающий ведение учета. Было принято решение в конце дня формировать блок из операций, проведенных за день и дальше оперировать уже целыми блоками. Только нужно решить, кто будет создавать этот блок и как сделать так, чтобы блоки нельзя было изменить задним числом. Вот тут на сцену выходят математика и криптография. Было решено, что первый кто сможет решить определенную математическую задачу, жестко связанную с предыдущим блоком в цепочке, тот имеет право оформить новый блок.

В конце дня человек нашедший решение задачи брал чистый лист бумаги и начинал записывать на него все транзакции, совершенные за день о которых ему стало известно, при этом проверяя их на достоверность. Недостоверные записки отбрасывались. Если транзакций оказывалось слишком много и все они не помещались на лист, то не поместившаяся часть оставлялась на следующий день. Подписывал получившийся блок своей подписью, присваивал номер на единицу больше предыдущего такого блока и одновременно добавлял ссылку на него. После этого получившейся блок рассылался остальным жителям острова.

Другие люди получив такой блок прекращали решение задачи и начинали проверять правильность полученного. Если в нем все было верно, они переписывали его к себе, в противном случае они его выкидывали и продолжали решение задачи. Использование цепочки блоков, содержащих отдельные транзакции упрощает ведение учета и упрощает обмен информацией. Теперь нет необходимости прослеживать все движения средств конкретного человека с самого начала, достаточно посмотреть его баланс в последнем таком блоке, да и оперировать проще более крупными частями, чем большим количеством мелких.

Как мы видим работы довольно много, и чтобы стимулировать жителей ее делать было принято решение, что тот, кто первым правильно оформит такой блок имеет право дописать на свой счет одну монету в качестве вознаграждения за работу. Так называемый принцип Proof-of-Work. Это единственный вариант, когда деньги появляются из пустоты. Причем создатель блока не может приписать себе вознаграждение больше одной монеты иначе все остальные жители будут считать данный блок недействительным.

Однако не все так просто. Может получиться так, что сразу двое или больше людей практически одновременно оформят новый блок и начнут его рассылать остальным. В результате в хождении окажется сразу два разных блока с одинаковым номером. На этот случай существует правило, что истинной считается самая длинная цепочка блоков начиная от первого и меньшинство должно примкнуть к большинству. Именно поэтому чтобы транзакция окончательно считалась подтвержденной ей мало оказаться в блоке, требуется еще несколько блоков после этого, чтобы она считалась окончательно истинной. Допустим жители приняли решение, что для этого требуется 3 блока.

Другими словами, однажды вечером Антон и Света одновременно оформили новый блок с номером 24, причем список транзакций в них был не идентичен. Следующим вечером первым решил математическую задачку Игорь и создал новый блок номер 25 на основе блока Светы. Те жители, кто принял накануне версию Антона должны будут, получив блок номер 25 принять его и блок 24 созданный Светой, так как это более длинная цепочка, а блок 24 Антона выбросить. При этом транзакции, которые были в блоке Антона, но отсутствовали в блоке Светы так же исчезают, вернее их как-бы и не было никогда. Только когда появится блок номер 26 основанный на блоке 25 Игоря можно считать, что все транзакции из блока 24 созданного Светой подтверждены.

shema hardfork

Это делается для того, чтобы исключить ситуацию, когда снова одновременно будут созданы два блока с номером 25, но один на основе блока Антона, а другой Светы. В этом случае обе цепочки имеют одинаковую длину и обе получаются верными. Какая цепочка победит будет зависеть от того, в какой из них первым будет найден 26 блок. Она станет длинней и более короткая должна признать свое поражение и примкнуть к длинной. Именно для таких ситуаций и существует количество блоков требуемых для подтверждения транзакции. Количество блоков требуемых для подтверждения выбирается из ходя из вероятности возникновения параллельных цепочек определенной длинны.

Однако, что будет, если по каким-то причинам часть жителей продолжит вести учет на основе блока 24 Антона, а другая блока 24 созданного Светой и будут игнорировать блоки из другой цепочки. В этом случае произойдет раскол блокчейна на две независимые цепочки, не связанные между собой, это явление получило название hardfork. Фактически возникнут две независимые денежные системы.

Из всего сказанного можно сделать еще один вывод, несмотря на то, что каждый житель имеет право вносить в блокчейн изменения, он не может переписать какой-либо блок в прошлом и приписать себе немного дополнительных денег или удалить сведения о своих тратах. Объяснение простое, все блоки жестко математически связанны между собой и любая попытка правки существующего блока сразу видна всем остальным. Именно в этом и состоит смысл в решении математических задач, это защищает блокчейн от изменений в прошлом. Единственный вариант как это можно сделать, это фальсифицировать весь блокчейн с нужного блока до последнего существующего на данный момент и еще сформировать несколько будущих блоков раньше остальных чтобы получилась более длинная цепочка, только тогда остальные будут вынуждены признать вашу версию правильной или не признают и случится hardfork.

Но для этого придется решить все математические задачи снова для каждого блока в очень короткие сроки, что на практике возможно только если ваша скорость решения задач больше 50% от скорости всех людей. Поэтому чтобы избежать ситуации, когда первым всегда будет создавать блок один и тот же человек обладающий наибольшей скорость решения задач, сложность задач автоматически меняется, внося элемент случайности и позволяя решать их разным людям, что защищает блокчейн от манипулирования.

Вот собственно и вся технология блокчейна что называется на пальцах. Конечно наше описание содержит множество упрощений и допущений, но общая идея думаем понятна. В итоге получилась с одной стороны полностью открытая распределенная система учета, хранящаяся одновременно у множества людей, в которой всегда можно узнать сколько есть денег у конкретного человека в данный момент и даже проследить все перемещения любых монет с самого начала ведения блокчейна. С другой стороны, каждый пользователь может распоряжаться только собственными деньгами и невозможно изменить уже записанные в блоки данные. Это обеспечивается математикой, а вот каким образом математика это делает выходит за рамки данного материала, да и большинству людей это вряд ли это нужно. Достаточно знать, что что обойти или взломать ее невозможно.

Конечно в реальности никакие бумажки не используются, весь блокчейн существует в электронном виде в компьютерных сетях, обычно это интернет. Вместо обычной подписи используется цифровая подпись. Да и математические задачки пользователям решать самостоятельно не приходится, компьютеры все делают сами. Вам собственно и знать обо всех этих хешах и прочих односторонних функциях необязательно, чтобы использовать blockchain на практике.

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

Впрочем, у нее есть и недостатки. Фактически каждый участник делает одно и тоже, просто дублируя действия других. Следовательно, в классическом виде система не масштабируема. Необходимость каждому скачать и хранить всю цепочку блоков, что занимает очень много времени и требует много места для хранения. Например, блокчейн биткоина на данный момент занимает примерно 170 ГБ. Необходимость иметь дорогое высокопроизводительное оборудование чтобы иметь возможность создавать новые блоки и много электричества для этого. Относительно не высокая скорость работы сети в базовом варианте, что не позволяет на ее основе построить систему платежей наподобие Visa/Mastercard. Не во всех случаях «прозрачность» блокчейна является благом. Впрочем, некоторые из упомянутых недостатков имеют те или иные варианты решения.