Почему блокчейн называется блокчейном.


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

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

Блок 1

Вася перевел Пете 100 GBG
Коля написал пост с заголовком "В чем смысл жизни?"
Женя проголосовал за пост Коли "В чем смысл жизни?"

Блок 2

Вася проголосовал за пост Коли "В чем смысл жизни?"
Лена написала комментарий "Ни в чем" к посту Коли "В чем смысл жизни?"

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

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

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

Мы разобрались, что все операции выполняемые пользователями документируются в блокчейне. В отдельных блоках, но нет гарантии, что кто нибудь не возьмет, да не поменяет цифру в в одном из блоков. К примеру отредактирует перевод монет от Коли к Биттрексу. Поменяет 100000 GBG, к примеру, на 1 GBG. Тогда нода при считывании протокола будет думать, что у Коли все еще 99999 GBG на балансе и хитрый и счастливый Коля сможет еще раз вывести много GBG на биржу и продать. Что можно сделать, как подписать операцию? Вот лет двадцать назад и предложили способ, как можно гарантировать, что блоки действительны и не были поправлены. Сейчас начнутся умные слова с упоминанием математики, но не бойтесь, я постараюсь все упростить.

Хэши

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

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

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

Вот пара примеров

Исходный текст Хэш
ropox | e41f9be42642a1c699d4d114038b9c358f5c0f4a75c3ced9bf90794ed4997606
bopox | 8a8e748a6bf749b8b986b1628447278d90cd1c996039ed55386d09679e51dfe4
в лесу родилась ёлочка | 65a2261d97a2e1c9fbedb7b23438d1a844b13fc3bc3b06935d620939ce1f5acd

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

Поэтому хэш можно считать уникальным отпечатком текста.

Вот благодаря уникальности хэша и получилось гарантировать целостность цепочки блоков. Причем весьма простым способом.

Воспользуемся примером из начала статьи. Сначала посчитаем хэш первого блока подав на вход хэш-функции все три операции из первого блока.

> Вася перевел Пете 100 GBG
> Коля написал пост с заголовком "В чем смысл жизни?"
> Женя проголосовал за пост Коли "В чем смысл жизни?"

3eb927b9f9ae3e1e3567803b5a6c081c426a62cee1825a5ec567c457d9809a4e

А теперь возьмем полученный хэш из первого блока и поместим его в начало второго блока

> 3eb927b9f9ae3e1e3567803b5a6c081c426a62cee1825a5ec567c457d9809a4e
> Вася проголосовал за пост Коли "В чем смысл жизни?"
> Лена написала комментарий "Ни в чем" к посту Коли "В чем смысл жизни?"

И посчитаем хэш всего блока включая хэш первого блока.

01253469b5c3d74cd2c433a5d00a6e168afd4f81f0322daab7dfce8a73388611

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

Я поменял 100 GBG на 10 GBG в первом блоке и получил совершенно другой хэш!

> Вася перевел Пете 10 GBG
> Коля написал пост с заголовком "В чем смысл жизни?"
> Женя проголосовал за пост Коли "В чем смысл жизни?"

934ac32785c834f837e53a9aaf74022a91927d76bde53dbac7c954dcaf6f685d

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

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

Вот почему блокчейн (blockchain англ. цепочка блоков) так называется. Блоки сцеплены друг с другом хэшем предыдущего блока в включенным в следующий. Так как хэш достаточно уникален, то и изменить текст в блоке, так что бы получился хэш записанный в следующем блоке не получится. Вернее теоретически можно конечно подобрать такой текст. Но лишь теоретически. Для этого понадобится перебрать как минимум 10^38 (10 в степени 38) вариантов. А при существующих вычислительных мощностях это займет тысячелетия. Для сравнения, в нашей галактике содержится по грубым оценкам 10^56 атомов.

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


Comments 31


Увлекательно! :)

20.11.2017 00:35
0

спасибо, очень полезно. лишний раз повторила! )))

20.11.2017 01:21
0

это надо отправить в википедию!

20.11.2017 01:21
0

Класс!
Наиболее доходчиво о блокчейне и хешах из всего, что мне приходилось читать.
Респект!

20.11.2017 06:23
0

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

20.11.2017 08:49
0

Спасибо, почитаю с удовольствием.

20.11.2017 08:58
0

/ru--blokcheijn/@stepanov/blokchein-i-kriptovalyuty-prostymi-slovami

20.11.2017 11:02
0

Доступное объяснение принципа действия, @ropox . Спасибо.

20.11.2017 06:41
0

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

Судя по способностям @ropox доступно рассказывать о блокчейне - он в рядах делегатов не случайно;)

20.11.2017 11:01
0

@ropox 53 секунды назад Передать 10000.000 Сила Голоса к golosmedia

Сорян за оффтоп, а чего там за движуха такая в @golosmedia есси не секрет?
Мож и мне пора голоса туды закидывать?))

20.11.2017 11:15
0

Это у @eee спрашивать. Он в октябре звал инвесторов. Платит дивиденды с деятельности @golosmedia. Наверное у него или в блоге golosmedia есть. Там и чат в телеграме был. Я свой выигрышь с лотереи вложил )

20.11.2017 11:19
0

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

Добуду лото-выигрыш, тож вложу куда-нить))

20.11.2017 11:32
0

/gmc/@eee/korporaciya-golos-media-gruppa-v-telegrame-dlya-obsuzhdeniya-proekta

20.11.2017 11:36
0

Это дружеские инвестиции "для узкого круга ограниченных людей" (с).

20.11.2017 12:20
0

Яснёха. А то я сижу, гадаю, может какой-нить еее-бустер запустился) Знач запомню пока, а как инвестировать надумаю, тады и вспомнится, бум смотреть, примерять...

20.11.2017 14:20
0

А описано круто, спасиб.
Я вот тока поспорю с

sha256. Эта функция гарантирует уникальность хэша

Хеши ничего не гарантируют. Щаз просто нет (обнародованных) способов, чтоб быстро "получить такой же фарш" из другого исходного набора букв. С md5 тож так было несколько лет назад, а терь коллизии нашлись.

20.11.2017 11:24
0

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

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

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

20.11.2017 11:44
0

А, ну да, эт у меня конец цитаты потерялся, и последующее объяснение))

Эта функция гарантирует уникальность хэша поистине в галактических масштабах.

Вродь квантовые все эти изобретения уделают sha256 на раз-два... Или чего-то ещё криптовое уделают, не помню точно))

20.11.2017 12:54
0

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

Один из выводов из второго закона термодинамики таков: для представления информации нужно определенное количество энергии. Для записи одного бита путем смены состояния системы требуется энергии не меньше, чем kT, где Т есть абсолютная температура системы, а k — постоянная Больцмана (не расходитесь, урок физики почти закончился). Учитывая, что k = 1.38×10^(-16) эрг/° Кельвина, а температура вселенной равна 3.2° Кельвина, идеальный компьютер, работающий при температуре 3.2°K будет потреблять 4.4×10^(-16) эрг каждый раз при смене бита. Для того, чтобы компьютер работал при температуре холоднее, чем космическая радиация, потребуется дополнительная энергия для запуска теплового насоса. Далее, годовой объем энергии, выделяемой нашим Солнцем, примерно составляет 1.21×10^41 эрг. Этого достаточно для 2.7×10^56 изменений битов в нашем идеальном компьютере, то есть для того, чтобы прокрутить 187-разрядный счетчик от нуля до максимума. Если бы мы построили сферу Дайсона вокруг Солнца и удерживали бы всю его энергию без потерь в течение 32 лет, наш компьютер досчитал бы до 2^192. Правда, при этом на выполнение каких-либо более полезных операций энергии бы уже не осталось. Но это только одна звезда, причем далеко не самая массивная. Типичная сверхновая излучает порядка 10^51 эрг. В форме нейтрино излучение в сотню раз больше, но мы их не трогаем, пусть себе летят. Если бы вся эта энергия могла бы быть собрана воедино в неистовой вычислительной оргии, мы бы смогли прокрутить от начала до конца 219-битный счетчик. Эти цифры не имеют ничего общего с технологией устройств, просто это тот максимум, который позволяет достичь термодинамика. Кроме того, они означают, что брутфорс, направленный на 256-битные ключи, невозможен, пока компьютеры не построены из чего-то другого, чем материя, и не занимают нечто иное, чем пространство.

Взято от сюда
https://htrd.su/wiki/_media/zhurnal/2012/03/23/todo_prikladnaja_kriptografija/cryptoshn.pdf

20.11.2017 13:23
0

Прикольненько)) Инопланетные майнеры, надеюсь, звёзды не фигачат ради их инопланетного биткойна)))

20.11.2017 15:12
0

Отличное, доходчивое объяснение!

21.11.2017 08:31
0

21.11.2017 12:22
0

Ооооче, оочень доходчиво излагаете, давайте дальше скорее!!!))

21.11.2017 12:23
0

Добрый вечер @ropox

Очень интересная статья, спасибо

И вопрос в связи с нею: что мешает злоумышленнику после внесения изменений в блок произвести пересчёт хэш функции от изменённого блока и записать вновь посчитанный хэш в блокчейн?

Заранее благодарю

Игорь

27.11.2017 16:34
0

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

28.11.2017 22:18
0

Хорошо, спасибо, если не возражаете, то продолжим?

Ему придется поменять все последующие блоки в цепочке.

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

Решение в хранении эталонной копии. С которой можно будет потом сравнить.

  1. Что такое "эталонная копия"? И где она хранится?

С уважением

Игорь

29.11.2017 09:49
0

Я наверное напишу ещё один текст на тему. Постараюсь внятно объяснить.

29.11.2017 09:58
0

Да, наверное это будет лучше всего, спасибо большое, подожду

29.11.2017 17:11
0

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

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

В сети голос алгоритмы хэширования не такие сложные, но там другие методы

29.11.2017 10:16
0

Да) и почему в сети Bitcoin вычисление хэша требует большой вычислительной мощности?

PS

Поскольку уровень вложенности дискуссии уже пять, то наверное лучше до следующего вашегго поста отложить выяснение

PPS

Пойду пока почитаю что такое nonce, target и зачем они нужны и почему в сети Bitcoin не просто вычисляется хэш функция, а вычисляется хэш функция удовлетворяющая определённым заранее заданным условиям

29.11.2017 17:17
0