Что такое Блокчейн?

Что такое Блокчейн?

AS Tokenerium

Приветствую, дорогие друзья!

Продолжаем рубрику "Образовалочка". Сегодня мы на пальцах разберем суть блокчейна и его преимущества! Приготовьте чаек, сядьте поудобнее и приготовьтесь к увлекательному чтиву!

Материал подготовлен на основе статьи WTF is The Blockchain?

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

Блокчейн: зачем нам вообще нужна настолько сложная технология?

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

Представьте, что Джо – Ваш лучший друг. Он уехал путешествовать за границу, и на пятый день путешествия звонит вам и говорит: “Чувак, мне срочно нужны деньги. Можешь отослать немного?”.

Вы отвечаете: "Отправлю прямо сейчас", и кладете трубку.

@airspiders

После Вы звоните в банк и просите перевести 1000$ на счет Джо.

Менеджер открывает базу данных, проверяет , есть ли у Вас достаточно средств для этого перевода. И делает запись в реестре следующим образом:

@airspiders
В рамках статьи технической стороне вопроса будет уделено минимум внимания для упрощения понимания.

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

@airspiders

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

Как раз таки в этом и заключается проблема нынешней системы

В течение многих лет мы зависели от посредников. Однако возникает вопрос: чем же так плоха подобная зависимость?

Проблема в том, что банки не являются частью какой-либо глобальной сети. Вся информация хранится исключительно в рамках одного банка.

• Что, если база данных, в которой зарегистрирована сделка, сгорела в пожаре?

• Что, если менеджер по ошибке написал отправил деньги на другой счет?

• Что, если он сделал это нарочно?

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

Чтобы ответить на этот вопрос, необходимо копнуть глубже и задать вопрос посложнее (в конце концов, сложные вопросы приводят к решениям, способным изменить мир).

Задумайтесь на секунду, что стоит за переводом денежных средств? Просто запись в реестре. Тогда возникает вопрос -

есть ли способ ведения реестра между участниками переводов без вмешивания третьей стороны?

Как Вы уже, наверное, догадались, ответом на этот вопрос является Блокчейн.

Это метод, который позволяет вести данный реестр самостоятельно, без участия посредников.

Вы еще здесь? Тогда, ответив на вопрос "Зачем?", давайте узнаем ответ на вопрос "Как?"

Да, но скажите мне, как это работает?

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

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

@airspiders


1. Пустая папка

Сначала каждый участник владеет пустой папкой. Постепенно каждый участник наполнит свою папку страницами с записанными транзакциями. Эта коллекция страниц сформирует реестр.

2. Как происходит транзакция?

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

Допустим, участник #2 хочет отправить участнику #9 10$

Чтобы совершить сделку, участник #2 объявляет всем: “Я хочу перевести 10$ на счет участника #9. Пожалуйста, запишите эту операцию на ваших листах.”

@airspiders

Все проверяют, достаточно ли денег на счету у участника #2. Если на счету есть необходимые 10$, то каждый участник делает пометку о переводе на своем листе:

@airspiders

Теперь транзакция считается завершенной.

3. Последующие транзакции

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

Предположим, что на странице можно зафиксировать только десять сделок. Как только десятая транзакция завершена, все участники переходят на следующую страницу.

@airspiders

Пришло время убрать заполненную страницу в папку и повторить пункт 2. 

4. Перенос заполненной страницы в папку

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

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

Интересно! Как мы запечатываем страницы?

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

... о волшебной машине!

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

Эта машина имеет название «хэш-функция», но в статье мы продолжим называть ее "волшебной машиной".
@airspiders

Предположим, что с левой стороны в машину была отправлена коробка с цифрой 4, с правой появилась та же коробка, но со словом "dcbea".

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

@airspiders

Давайте попробуем отправить внутрь машины другое число. Как насчет 26?

@airspiders

На выходе мы получили "94c8e". Интересно! Получается, что выходящие значения тоже могут содержать цифры?

Что, если я задам Вам следующий вопрос:

Что нужно отправить с левой стороны машины, чтобы на выходе получилось слово, которое начинается с трех нулей? Например, 000ab, 00098 или 000fa?
@airspiders

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

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

@airspiders

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

@airspiders

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

Как вы думаете, насколько сложно ответить на такой вопрос: если я дам вам число, скажем, 72533, и задам вам вопрос: “Дает ли это число слово, которое начинается с трех нулей?”

Все, что необходимо сделать, это ввести 72533 в машинку и посмотреть, что она выдала с правой стороны. Вот и все!

Наиболее важным свойством таких машин является то, что -

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

Мы воспользуемся волшебной машинкой, чтобы создать печать для нашей страницы. Как всегда, начнем с воображаемой ситуации:

Представьте себе, что у вас две коробки. Первая коробка содержит номер 20893. Можете ли вы узнать число, которое при сложении с числом в первой коробке, при прохождении через машинку, в результате выдает нам слово, которое начинается с трех нулей?

@airspiders

Так же, как и в предыдущем примере, единственным способом для расчета такого значения является перебор всех чисел по порядку.

После нескольких тысяч попыток, допустим, было выведено значение 21191, которое при добавлении к 20893 (т. е. 21191 + 20893 = 42084) подается в машину и в результате дает нам слово, удовлетворяющее нашим требованиям.

@airspiders

В этом случае число 21191 становится печатью для числа 20893.

Предположим, есть страница, на которой написано число 20893. Чтобы запечатать эту страницу (т.е. защитить ее от замены содержания), мы поставим значок с надписью "21191" поверх нее. Как только номер запечатывания (21191) вставлен на странице, страница считается защищенной.

@airspiders
Номер печати - «Proof Of Work»(доказательство работы), что означает, что этот номер является доказательством того, что усилия были предприняты для его вычисления. В статье мы продолжим называть его номером печати.

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

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

Наконец, запечатывание страницы...

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

@airspiders
Фраза «слово, начинающееся с трех нулей» здесь используется только в качестве примера. Он показывает, как функции хэширования работают на самом деле. Реальные задачи гораздо сложнее, чем наша.

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

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

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

@airspiders

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

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

• Участник неправильно услышал транзакцию, объявленную в сети

• Участник неправильно зафиксировал транзакцию, объявленную в сети

• Участник пытался обмануть других либо для своей выгоды, либо в пользу кого-то еще в сети

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

Тогда почему все участники тратят ресурсы, делая расчет, когда они знают, что кто-то другой когда-нибудь вычислит номер печати и объявит им об этом? Почему бы не сидеть сложа руки и не ждать анонса?

Здесь вступает в силу система вознаграждений. Каждый участник блокчейна имеет право на вознаграждение. Участник получает деньги за свою работу (за затраченные мощности видеокарты/процессора и электричество).

Просто представьте: если участник #5 вычислит номер печати для страницы, он получает в награду деньги, скажем, 1$. Другими словами, счет участника #5 увеличивается на 1$ без снижения баланса счета кого-либо другого.

Вот так биткоин начал свое существование. Это была первая валюта для транзакций в системе блокчейн (т. е. системе распределенного реестра). 

Когда достаточное количество людей обладает биткоином, он растет в стоимости, мотивируя большее количество людей к присоединению к системе. Это, в свою очередь, ведет к дальнейшему росту стоимости биткойна, что, в свою очередь, еще больше мотивирует людей к активному участию в блокчейне и так далее.

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

Каждая страница является Блоком (block), а каждая папка является частью цепи (сhain), отсюда рождается название системы - блокчейн (blockchain).

Итак, друзья мои, мы выяснили как работает Блокчейн


Осталось прояснить только одну маленькую деталь.

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

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

Защита изменения номера печати

Помните, как я сказал вам, что я выдал вам две коробки - одна с номером 20893, а другая пустая для вычисления? На самом деле, чтобы вычислить номер печати в Блокчейне, вместо двух ящиков, используется три - два предварительно заполненных и один для расчета.

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

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

@airspiders

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

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

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

@airspiders

Но что произойдет, если нечестных человек будет шесть?

В этом случае протокол можно признать провальным. Такое явление называется “Атакой 51”. Если большинство людей в сети решит играть не по правилам и обманывать остальных участников, протокол потерпит неудачу.

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

Вот и все, что нужно знать о блокчейне. Если вы когда-нибудь встретите кого-то, кто до сих пор задается вопросом: “Что же такое блокчейн?” - вы знаете, куда их отправить. 

Наши статьи:

Как создать MEW (ETH)-адрес: http://telegra.ph/Kak-sozdat-My-Ether-Wallet-MEW-02-17

Что такое AirDrop и как в нем участвовать: http://telegra.ph/Kak-uchastvovat-v-AirDropBounty-kampaniyah-i-chto-ehto-takoe-02-19

Еще больше полезной информации у меня на канале: t.me/airspiders

Report Page