Перейти к содержимому. | Перейти к навигации

УНИИТО Лучевая Диагностика

Персональные инструменты

This is SunRain Plone Theme

Navigation

Вы здесь: Главная / Users / BuzzXray / BLOCKCHAIN / WTF is The Blockchain?

WTF is The Blockchain?

3000 русских слов объясняющих технологию Блокчейн.
Автор оригинального текста ( https://hackernoon.com/wtf-is-the-blockchain-1da89ba19348 ) и картинок
Mohit Mamoria CEO, Authorito Capital (https://authorito.com)

 

bcoins.png 

     Если вы не прячетесь, как рак под камнем, то я уверен , вы слышали о Bitcoins и Blockchain. В конце концов, в наши дни они являются модными и главными темами медиа - в общем, модные слова года. Об этом говорят даже люди, которые никогда не майнили криптовалюту или не понимали, как это работает. У меня больше друзей гуманитариев, чем технорей. Они достают меня неделями, чтобы я объяснил им это новое модное слово. Думаю, есть тысячи людей, которые чувствуют то же самое. И когда это случается, хочется написать то, что можно объяснить другим потерянным душам. Это цель данной публикации, которая написана простым русским  (в оригинале английским) языком и которую поймет любой обычный пользователь Интернета.


Blockchain: зачем нам все эти сложности?


«Для каждой сложной проблемы есть ответ, который ясен, прост и неправилен». - HL Mencken

 

В отличие от любого другого поста в Интернете, вместо того чтобы сначала объяснить работу Blockchain'а, мы должны понять, какую проблему он решает.

Представьте, Джо Ваш лучший друг. Он путешествует по всему миру, и на пятый день своего отпуска он звонит вам и говорит: «Чувак, мне нужны деньги. Они у меня закончились."

Вы отвечаете: «Сейчас отправлю», и вешаете трубку.


Затем вы звоните своему менеджеру по работе с клиентами в свой банк и говорите ему: «Пожалуйста, перечислите 1000 долларов США из моей учетной записи на счет Джо».

Менеджер аккаунта отвечает: «Йес, сэр».

Он открывает реестр, проверяет баланс вашего счета, чтобы убедиться, что у вас достаточно средств, чтобы перевести $1000 для Джо. Так как вы богатый человек, у вас достаточно денег; и менеджер делает запись в реестре следующим образом:

Регистр транзакций

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


Вы звоните Джо и говорите ему: «Я перечислил деньги. В следующий раз, когда ты пойдешь в свой банк, ты можешь снять 1000 долларов, которые я только что перечислил».


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

И это проблема существующих систем.

Чтобы установить доверие между нами, мы зависим от отдельных третьих сторон.

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

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

  • Что делать, если этот реестр, в котором была зарегистрирована транзакция, сгорит при пожаре?
  • Что, если, по ошибке, ваш менеджер аккаунта написал 1500 долларов вместо 1000 долларов?
  • Что, если он сделал это нарочно?

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


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

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

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

Есть ли способ сохранить реестр среди нас, а не у кто-то другого, делающего это для нас?


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

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

Вы все еще со мной? Хорошо. Потому что теперь, когда у вас возникло несколько вопросов, мы узнаем, как работает этот распределенный реестр.

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


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

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


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


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


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

2. Когда происходит сделка


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

Теперь, если #2 хочет отправить $10 #9.

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


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

Первая транзакция на странице

Таким образом, транзакция считается выполненной.

3. Транзакции продолжаются.


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

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

Когда страница заполняется

Пора положить страницу в папку и завести новую страницу и повторить процесс.

4. Откладывание страницы.


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

[Jargon Box] Это называется майнинг («добыча») на странице, чтобы обезопасить ее, но для простоты этого мы будем называть это «опечатыванием».

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

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


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

Волшебная машина


Представьте себе машину, окруженную толстыми стенами. Если вы отправите коробку с чем-то внутрь, она вернет коробку с чем-то еще.

[Jargon Box] Эта машина называется «Функция хэширования», но мы не настроены быть слишком техничными. Итак, на сегодняшний день это «Волшебная машина».
Волшебная машина (также известная как функция Хеширования)

Предположим, вы отправите номер 4 внутрь, мы обнаружим, что она выдала следующее слово на выходе: 'dcbea.'

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

хэш (4) == dcbea

Получив слово «dcbea», невозможно сказать, что машина имела на входе. Но каждый раз, когда вы загружаете номер 4 в машину, он всегда будет выдавать одно и то же слово «dcbea».

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

хэш (26) == 94c8e

На этот раз мы получили «94c8e». Интересно! Таким образом, слова могут содержать номера тоже.

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

«Можете ли вы сказать мне, что мне следует отправлять на вход машины, чтобы я получил слово, которое начинается с трех ведущих нулей на выходе? Например, 000ab или 00098 или 000fa или что-нибудь другое.

Прогнозирование ввода

Подумайте о вопросе на мгновение.

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

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

Попробуйте все для расчета входного значения.

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


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

Насколько сложно, по вашему мнению, дать ответ, если я дам вам номер, скажем, 72533, и задаю вам вопрос: «Дает ли это число, когда он подается в машину, слово, начинающееся с трех ведущих нулей?»

Все, что вам нужно сделать, это дать номер машине и посмотреть, что вы получили на выходе. Вот и все.

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

Мы будем иметь ввиду это свойство Волшебной машины (или функции Хеширования) на всем протяжении этого поста:

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

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


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

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


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

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


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

Опечатывающий номер

[Jargon Box] Опечатывающий номер называется «Proof Of Work», что означает, что это число является доказательством того, что были предприняты усилия для его расчета. Для удобства, назовем его «опечатывающим номером» для наших целей.

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

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

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


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



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

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

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

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


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

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

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


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

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

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

Отличный вопрос. Вот тут и появляются стимулы. Каждый, кто является частью Blockchain, имеет право на получение вознаграждения. Первый, кто расчитал номер печати, вознаграждается деньгами за затраченные усилия (т. е. за затраченные мощности ЦП и электричества).

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

Так появился Биткойн. Это была первая валюта, которая работала на Blockchain (т.е. на распределенном реестре). И в свою очередь, чтобы поддерживать усилия в сети, люди вознаграждались Биткойнами.

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

Награды заставляют всех продолжать работать в сети.

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

[Jargon Box] Подумайте о  странице, как о блоке транзакций и папке в виде цепочки страниц (блоков),  и таким образом Вы превращаете ее в Blockchain.


Друзья мои, так работает Блокчейн!

 


За исключением того, что есть одна крошечная вещь, о которой я вам еще не говорил.

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

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


Защита от модификаций опечатывающих номеров


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

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

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


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

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

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

Самая длинная цепь - это цепочка заслуживающая доверия.
Самая длинная цепь - это честная цепочка.

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

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


В этом случае протокол "упадет вниз лицом". И это называется «атака в 51%». Если большинство физических лиц в сети решают стать нечестными и обмануть остальную сеть, протокол не сможет выполнить свою задачу.

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

И это все, что я хотел сказать о Блокчейне. Если вы когда-нибудь обнаружите, что кто-то чувствует себя отставшим и задается вопросом: «WTF - это Блокчейн?» вы знаете, куда его отправить.  Сохраните ссылку.

 --------------------

WTF - What the fuck! - Что за хрень! (примечание переводчика).