Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
semisto
7 лет назад

БЛОКЧЕЙН - самое ПРОСТОЕ объяснение работы технологии + ВИДЕО

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

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

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


Представим, что у вас есть лучший друг Джо, который путешествует по всему миру. Однажды, на 5-й день путешествия, он звонит вам и просит «Спасай, у меня закончились деньги, переведи мне немного», а вы отвечаете «Конечно, сейчас все сделаю». После этого вы звоните или приходите в банк и сообщаете, что необходимо перевести N-ную сумму на счет Джо. Ваш банкир проверяет ваш текущий баланс на предмет наличия этой суммы и переводит деньги на счет Джо. 

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

«В чем же проблема?», - спросите Вы. А проблема в том, что в случае определенных обстоятельств, коллапс или сбой системы породит потерю ваших средств и средств других пользователей этой системы, что уже не раз происходило в истории. Наглядный пример, развал СССР и потеря вкладов 40 миллионов пользователей банка. Этого случилось из-за того, что люди доверились третьей стороне.
Может ли существовать система, где мы сможем все так же пересылать деньги, но без необходимости обращения в банк, либо к другому подобному посреднику?
Здесь лучше перефразировать вопрос для получения правильного ответа. Существует ли способ содержать реестр между нами, вместо того, чтобы это делал для нас кто-то другой?
Да! Этот способ существует и это, как вы уже догадались – БЛОКЧЕЙН – способ содержания реестра между нами, взамен зависимости от третьей стороны.
Если вы еще здесь, то я поведаю о том, как же этот распределенный реестр работает.
Этот способ требует наличия достаточного количества людей, желающих не зависеть от третьей стороны. Только после этого группа сможет содержать реестр. Как много необходимо? Хотя бы три человека.
Для примера мы возьмем 10 человек, которые решили бросить банки и другие системы третьей стороны. По общему согласию, каждый из 10 постоянно имеет все подробности счетов других участников, но без знания их личности.

Шаг 1. Пустая папка.
Каждый имеет пустую папку, которая будет заполняться страницами. Эта коллекция страниц сформирует реестр транзакций.
Шаг 2. Когда случается транзакция.
Каждый сидит с пустой страницей и ручкой в руке. Каждый готов записать любую транзакцию, которая произойдет внутри системы.
Теперь, №2 желает отослать $10 №9 Чтобы создать транзакцию №2 говорит: «Я пересылаю $10 №9. Каждый, сделайте запись об этом на своей странице». 

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


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

 Теперь наступило время положить заполненную страницу в папку, раздать новую страницу каждому участнику и повторять процесс, начиная с шага 2.
Шаг 4. Хранение страницы.
Перед тем как отправить страницу в папку, мы должны пропечатать ее уникальной печатью, с которой согласятся все участники. Ставя печать на страницу мы уверены, что никто не сможет сделать изменения на странице, отправляя ее в папку, не сегодня, не завтра, не через год. Как только страница с печатью оказалась в папке, она остается там.

Если все верят печати, то все верят содержимому страницы и этот процесс самый затруднительный, он называется майнинг, но для простоты я буду называть его процессом запечатывания.

Ранее третья сторона или посредник давал нам доверие в том, что написанное в реестре никогда не будет изменено. В распределенной и децентрализованной системе, как наша, эта печать предоставляет доверие.

Интересно, а как мы будем продолжать этот процесс дальше?
Перед этим нам необходимо узнать, как работает…
Магическая машина.


Представьте машину, окруженную толстыми стенами. Если вы отправите коробку с одним содержимым с левой стороны, она выдаст коробку, содержащую что-то другое с правой стороны.
Эта машина называется «Хеш функцией», но мы не в настроении быть столь техническими и будем продолжать называть ее магической машиной.
Предположим, вы послали в магическую машину цифру 4 внутри коробки. С правой стороны машина выдаст слово «dcbea».


Как она конвертировала цифру 4 в это слово? Никто не знает. Более того это необратимый процесс. По полученному слову «dcbea» невозможно сказать, что было на входе в машину с левой стороны. Но каждый раз, когда вы будете загружать цифру 4 в машину, она всегда будет выдавать то же слово «dcbea» с правой стороны.
Давайте попробуем отправить другое число, например, 26.


В этот раз мы получили «94c8e». Интересно. Значит слова могут содержать также цифры. Что если я задам вам вопрос: «Скажите мне, что я должен отправить с левой стороны машины, чтобы получить слово, начинающееся с трех нулей? Например, «000wd», «000t5», «00044».
Имея такую машину как можно ответить на этот вопрос? Существует один метод. Почему бы не перепробовать каждое число во вселенной одно за другим, пока мы не найдем необходимое слово, начинающееся с трех нулей?


Будем оптимистичны. После нескольких тысяч попыток, мы найдем это число. 

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


Самые главные свойства машины – это экстремальная сложность найти входящее число, зная исходящее слово и простота проверки правильности входящего числа. Мы запомним эти свойства Магической машины (Хеш функции) на протяжении этой статьи.

Как использовать эту магическую машину для создания печати для нашей страницы?


Представим, что я даю вам две коробки. Первая коробка содержит число 20893. Можете ли вы определить число, которое мы добавим к числу из первой коробки 20893, направим его в машину и получим слово, начинающееся с «000»? Эта ситуация похожа на ту, какую мы видели раньше и единственный путь вычислить это число – подбор каждого числа друг за другом.
После тысяч попыток мы придем к числу 21191. 

Когда мы добавим число 21191 к 20893, то мы получим число 42084. Если это число загрузить в магическую машину, мы получим требуемое слово, начинающееся на «000».
В нашем случае, число 21191 стало печатью к числу 20893. Предположим, что существует страница с числом 20893 написанным на ней. Чтобы пропечатать эту страницу, т.е. сделать ее защищенной от правок содержимого, мы ставим на ней печать 21191.

Печатный номер на самом деле называется «Proof-Of-Work», означающее, что этот номер есть доказательство проделанной работы для вычисления этого числа. Мы продолжим называть его печатный номер для простого понимания.

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

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

Примечание.
Используемое в статье «слово, начинающееся с «000» - это всего лишь пример. Он иллюстрирует как работает Функция Хеша. При реальной работе – задачи более сложные, чем эта.

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


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

Но что, если объявленное печатное число не приводит к необходимому результату, скажет №7? Такие случаи не являются чем-то необычным. Возможные причины для этого могут быть следующие:

  • Он мог неправильно услышать транзакции, объявленные в сети.
  • Он мог неправильно записать транзакции, которые были объявлены в сети.
  • Он мог попытаться схитрить или быть нечестным, когда писал транзакции в пользу себя или кого-то другого в сети.

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

Печатный номер, с которым соглашается большинство, становится честным печатным номером.

Почему же тогда каждый тратит ресурсы для выполнения вычислений, когда они знают, что кто-то другой определит и объявит его? Почему бы просто не сидеть и ждать объявления?
Отличный вопрос. Это та часть, где появляется стимулирование. Каждый, кто есть частью блокчейна способен получать награды. Первый, кто вычислит печатный номер будет награжден деньгами за свои усилия (за использование вычислительной мощности и электроэнергии).
Просто представим, что №5 вычислил печатный номер страницы, он награжден деньгами, допустим $1, который создается из ничего. Другими словами, баланс №5 увеличится на $1 без уменьшения счета кого-либо другого участника.
С таким подходом появился Bitcoin. Это была первая валюта, которая была переведена на блокчейн. Взамен усилиям, для поддержания рабочей сети, люди награждаются биткоинами и это есть единственный источник получения новых виртуальных монет этой валюты.

Награды способствуют продолжению работы каждого в сети.

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

Подумайте о странице, как о Блоке транзакций и о папке, как о цепочке страниц (Блоков), следовательно, превращая это все в блокчейн.

… и это то, как работает блокчейн.

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

Защита от модификаций печатных номеров.
Помните, как я говорил о двух коробках, где одна содержала число 20893, а вторая - пустая, для ваших вычислений? В реальности вместо двух коробок, существует три: две с содержимым и третью необходимо вычислить. Когда содержимое всех трех коробок соединено и загружено в машину, исходящий ответ с правой стороны должен удовлетворить необходимым условиям.
Мы уже знаем, что одна коробка содержит список транзакций, еще одна коробка будет содержать печатный номер, а третья коробка содержит печатный номер от предыдущей страницы.


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

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

Что если вместо одного шесть индивидуумов станут нечестными?
В этом случае блокчейн будет обманут и это известно, как «Атака 51%». Если большинство индивидуумов в сети решит стать нечестными и обмануть оставшуюся сеть, то технология не сможет выполнять свою задачу.
Это единственная причина почему блокчейн может когда-либо подвергнутся краху. Мы должны знать уязвимые места системы, как и то, что она построена на предположении, что большинство пользователей всегда честны.

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

При создании статьи использовался материал Mohit Mamoria https://hackernoon.com/wtf-is-the-blockchain-1da89ba19348

4
0.000 GOLOS
На Golos с July 2017
Комментарии (1)
Сортировать по:
Сначала старые