Продолжу повествование про блокчейн, делегатов и ноды. Как я это вижу и и понимаю. Постараюсь рассказать попроще. В предыдущей статье я рассказал, что такое блокчейн и ноды. Мы уже разобрались, что по сути блокчейн, это запись действий всех пользователей в отдельные блоки.
Все операции производимые пользователями группируются в эти самые блоки и записываются каждые три секунды на диск.
Блок 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 атомов.
Конечно, если есть всего один сервер, записывающий блоки, то можно поменять цепочку, и хэши не помогут. Вот тут то и вступают в игру делегаты. Но о делегатах я расскажу в другой раз.
Добрый вечер @ropox
Очень интересная статья, спасибо
И вопрос в связи с нею: что мешает злоумышленнику после внесения изменений в блок произвести пересчёт хэш функции от изменённого блока и записать вновь посчитанный хэш в блокчейн?
Заранее благодарю
Игорь
Ему придется поменять все последующие блоки в цепочке. Если блокчейн лежит на одном единственном компьютере, то да, ничего не помешает это сделать. Решение в хранении эталонной копии. С которой можно будет потом сравнить.
Хорошо, спасибо, если не возражаете, то продолжим?
С уважением
Игорь
Хотя если коротко, то к примеру в сети bitcoin вычисление хэша требует большой вычислительной мощности. Такой, что бы один блок вычислялся раз в десять минут. Первые блоки можно было вычислить при желании на листочке бумаги, сейчас же вы наверняка слышали о майнерах и какая гонка вооружений вычислительными мощностями идет.
Наверное современными специализироваными компьютерами можно хэши пересчитать первых N блоков пересчитать за секнуды, но чем ближе к современным блокам, тем больше будет требоваться времени. Одним компьютером уже не обойтись.
В сети голос алгоритмы хэширования не такие сложные, но там другие методы
Да) и почему в сети Bitcoin вычисление хэша требует большой вычислительной мощности?
PS
Поскольку уровень вложенности дискуссии уже пять, то наверное лучше до следующего вашегго поста отложить выяснение
PPS
Пойду пока почитаю что такое nonce, target и зачем они нужны и почему в сети Bitcoin не просто вычисляется хэш функция, а вычисляется хэш функция удовлетворяющая определённым заранее заданным условиям
Я наверное напишу ещё один текст на тему. Постараюсь внятно объяснить.
Да, наверное это будет лучше всего, спасибо большое, подожду
Ооооче, оочень доходчиво излагаете, давайте дальше скорее!!!))
Отличное, доходчивое объяснение!
Ваш пост поддержали следующие Инвесторы Сообщества "Добрый кит":
yefet, t3ran13, ianboil, chiliec, gildar, polyideic, fetta, max-max, niiu, vik, tinochka, forbon21, vadbars, zlata777, kotik, nefer, semasping, ladyzarulem, romapush, tnam0rken, arystarch, asparian, exan, arturio777, radegar, boltyn, alikssandra, gapel, newodin, oksana0407, master-set, vika-teplo, borisss, optimist, amelina.elena, varya-davydova, dmitrijv, wrong, brika, kertar, lokkie, ifingramota, varja, zhenek, abloud, magformers, chimborazo, chugoi, shafarevich, kito-boy, dinosaurmike, onur1s, solips, cryptovisitor, benken, snooze, kash47, sinilga, jahspear, cryptobandera, denis.aka.wolf
Поэтому я тоже проголосовал за него!
Узнать подробности о сообществе можно тут:
Разрешите представиться - Кит Добрый
Правила
Инструкция по внесению Инвестиционного взноса
Вы тоже можете стать Инвестором и поддержать проект!!!
Если Вы хотите отказаться от поддержки Доброго Кита, то ответьте на этот комментарий командой "!нехочу"
dobryj.kit теперь стал Делегатом! Ваш голос важен для всего сообщества!!!
Поддержите нас:
А описано круто, спасиб.
Я вот тока поспорю с
Хеши ничего не гарантируют. Щаз просто нет (обнародованных) способов, чтоб быстро "получить такой же фарш" из другого исходного набора букв. С md5 тож так было несколько лет назад, а терь коллизии нашлись.
Я и не говорю, что он гарантирует абсолютную уникальность. Ниже я написал и там ссылка на подсчет, сколько надо перебирать, что бы получить коллизию.
И да, на данный момент нет способов, вычяислить текст. Так что с практической точки зрения его можно принять пока как уникальный.
С md5 да, я уже лет 15 назад, при использовании его в качестве индекса, сранвнивал по мимо самого хэша еще и сам текст. Так как коллизии уже тогда на тех объемах встречались нередко. md5 уже давно не использовал. Так, если по быстрому два файла сравнить
А, ну да, эт у меня конец цитаты потерялся, и последующее объяснение))
Вродь квантовые все эти изобретения уделают sha256 на раз-два... Или чего-то ещё криптовое уделают, не помню точно))
пока нет алгоритмов для вычисления текста, квантовые компьютеры не страшны для SHA-256. Что бы за обозримое время просто прокрутить 256-разрядный счетчик - понадобится энергия взрыва сверхновой звезды.
Взято от сюда
https://htrd.su/wiki/_media/zhurnal/2012/03/23/todo_prikladnaja_kriptografija/cryptoshn.pdf
Прикольненько)) Инопланетные майнеры, надеюсь, звёзды не фигачат ради их инопланетного биткойна)))
Сорян за оффтоп, а чего там за движуха такая в @golosmedia есси не секрет?
Мож и мне пора голоса туды закидывать?))
Это дружеские инвестиции "для узкого круга ограниченных людей" (с).
Яснёха. А то я сижу, гадаю, может какой-нить еее-бустер запустился) Знач запомню пока, а как инвестировать надумаю, тады и вспомнится, бум смотреть, примерять...
Это у @eee спрашивать. Он в октябре звал инвесторов. Платит дивиденды с деятельности @golosmedia. Наверное у него или в блоге golosmedia есть. Там и чат в телеграме был. Я свой выигрышь с лотереи вложил )
Ясненько. В блоге нема, я ж сперва туды смотреть, а потом спрашивать)
Добуду лото-выигрыш, тож вложу куда-нить))
https://golos.id/gmc/@eee/korporaciya-golos-media-gruppa-v-telegrame-dlya-obsuzhdeniya-proekta
Умение говорить просто о сложном - важный признак квалифицированного специалиста в любой области. Это правило я многократно проверил на своем опыте. Если же человек не способен кратко и понятно рассказать о каком-либо своем профессиональном аспекте, значит он еще сам не разобрался в вопросе.
Судя по способностям @ropox доступно рассказывать о блокчейне - он в рядах делегатов не случайно;)
Доступное объяснение принципа действия, @ropox . Спасибо.
Класс!
Наиболее доходчиво о блокчейне и хешах из всего, что мне приходилось читать.
Респект!
Еще @stepanov о блокчейне доходчиво написал, чем больше разных текстов с простым описанием, тем быстрее люди поймут и разберутся.
Спасибо, почитаю с удовольствием.
https://golos.id/ru--blokcheijn/@stepanov/blokchein-i-kriptovalyuty-prostymi-slovami
это надо отправить в википедию!
спасибо, очень полезно. лишний раз повторила! )))
Увлекательно! :)