(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Самое понятное объяснение принципа работы блокчейна

Источник: tjourna

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

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

Блокчейн - это дневник, который почти невозможно подделать

Реклама 04

Коля решил вести дневник. Для этого он завёл тетрадку и начал писать там строчки вроде таких:

1. Купил хлеба
2. Позвонил Геннадию

132. Дал Васе в долг 100 рублей
133. Трахал Люду
134. Покакал

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

Вася решил не искушать судьбу, пробрался к Коле в дом, нашёл дневник, долистал до строчки 132 и заменил её на "Трахал Олю". На следующий день Коля достал дневник, долго искал в нём запись про долг Васе, не нашёл и пришел извиняться.

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

Придумал он следующее. У себя в операционной системе "Линупс" он нашёл программу md5sum, которая брала любой текст и превращала его в хеш - 32 непонятные цифры. Как именно она это делала, Коля не понимал, но в целом казалось, что она выдавала полную белиберду. Например, если в программу ввести слово "привет", она в ответ выдаёт "8b4609d7e974702ff1451220c7ededcf". А если ввести, казалось бы, почти то же самое, но с лишним пробелом, то уже "69ab827825fdb876e709abd3d783dbb6".

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

0000 (начальный хеш, ограничимся для простоты четырьмя знаками)
1. Купил хлеба
4178 (хеш от 0000 и "Купил хлеба")
2. Позвонил Геннадию
4234 (хеш от 4178 и "Позвонил Геннадию")

4492
132. Дал Васе в долг 100 рублей
1010
133. Трахал Люду 
8204 (хеш от 1010 и "Трахал Люду")

Если теперь какой-нибудь Вася захочет изменить строчку 132, изменится и хеш этой строчки (он будет не 1010, а чем-то другим). Это, в свою очередь, повлияет на хеш строчки "133. Трахал Люду" (он будет не 8204, а чем-то другим), и так далее до конца дневника. Теперь ради одной записи Васе придётся подменить весь дневник после неё, что сложно.

Прошло время, Коля открыл банк. Он всё так же писал в дневничок записи "дал в долг" и "взял в кредит", снабжая их хешами. Банк разросся, и однажды он дал в долг (уже новому) Васе миллион. Следующей ночью десять нанятых Васей за полмиллиона таджиков пробрались в комнату Коле, заменили запись "143313. Дал в долг Новому Васе 1000000" на "143313. Дал в долг Новому Васе 10" и по-быстрому пересчитали все хеши вплоть до конца дневника.

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

0000 (начальный хеш, ограничимся для простоты четырьмя знаками)
1. Купил хлеба (22)
4100 (хеш от 0000 и "Купил хлеба (22)", 22 было подобрано, чтобы хеш кончался на 00)
2. Позвонил Геннадию (14)
3100 (хеш от 4100 и "Позвонил Геннадию (14)")

1300
132. Дал Васе в долг 100 рублей (67)
9900
133. Трахал Люду (81)
8200 (хеш от 9900 и "Трахал Люду (81)")

Для создания каждой записи Коле теперь в среднем нужно будет перебрать порядка 50 чисел, что трудозатратно. Соответственно, если запись кто-то подменит, подделка её и всех последующих будет тоже в 50 раз сложнее, а это значит, что теперь Васе даже с таджиками не справиться.

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

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

Блокчейн - это не более чем дневничок записей, который можно записывать совместно, и в котором де-факто невозможно подделать старые записи.

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

Поверх дневничка с некоторым количеством криптографии можно строить другие интересные системы. Например, можно делать записи в духе "Кто решит уравнение f(x) = 14, тот получает 10 монеток". Соответственно, первая запись в дневничке, где будет предоставлено решение, может автоматически считаться получателем монеток. Вокруг этой и схожих идей строятся так называемые "контракты".

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



 Распечатать »
 Правила публикации »
  Обсудить материал в конференции Дискуссии и обсуждения общего плана »
Написать редактору 
 Рекомендовать » Дата публикации: 07.06.2017 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
ZBrush 4R6 Win Commercial Single License ESD
Creative Cloud Multiple Platforms Multi European Languages Only Renewal Licensing Subscription 12 months L1 (1-9)
Microsoft Windows Remote Desktop Services CAL 2016 Sngl OLP 1License NoLevel User CAL
Антивирус ESET NOD32 SMALL Business Pack renewal for 5 user. Электронный ключ.
NauDoc Enterprise 10 рабочих мест
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
CubeX Duo
MakerBot Replicator 5th GEN
3D ручка Myriwell, голубая
3D сканер SENSE
CubeX Trio
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Новые материалы
Программирование на Microsoft Access
Компьютерная библиотека: книги, статьи, полезные ссылки
OS Linux для начинающих. Новости + статьи + обзоры + ссылки
Реестр Windows. Секреты работы на компьютере
Проект mic-hard - все об XP - новости, статьи, советы
 
Рассылки Maillist.ru
Территория Linux - вход свободный
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
Обсуждения в форумах
Программы Delphi на заказ (220)
Пишу программы в среде Delphi на заказ http://bddelphi.ucoz.ru/
 
Помощь по MS Access (319)
Доброе время суток. Случайно оказался на этом сайте, искал статьи по OLAP. Вижу, что...
 
Пишу программы на заказ профессионально (1894)
Пишу программы на заказ на языках Pascal (численные методы, списки, деревья, прерывания) под...
 
Corel. Сохранение файла в старом формате. (24)
у меня есть горящий вопрос по Корелу и никто мне не может дать на него ответ. Я работаю в...
 
Удалённая работа программистом ASP.NET(C#) (77)
Знанию asp.net(C#) . Знаком с паттернами проектирования по книги M.Файлера.Знание HTML,...
 
 
 



    
rambler's top100 Rambler's Top100