pratconi.com

  • 12 303

Место для вашей рекламы

Как работает блокчейн простыми словами

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

Однако объяснить людям то, как работает блокчейн и сам Bitcoin, до сих пор непросто. В этой статье я приведу самый простой пример работы блокчейна в виде истории о Гоше, ведущем дневник, и Гарике, который пытается этот дневник подделать. Думаю суть поймет даже ребенок. Поехали.

Что такое блокчейн простыми словами - простым языком


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

Гоша решил вести дневник. Для этого он завел тетрадку и начал в ней писать подобные строчки:

1. Сходил в магазин

2. Попил пиво

75. Дал в долг 300 рублей Гарику

76. Посмотрел фильм

77. Поспал

Гоша старался вести дневник честно, и если у него с кем-то возникал спор по поводу того, что происходило ранее, он доставал дневник и тыкал всех носом в свои записи. 

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

Гарик решил не искушать судьбу, пробрался к Гоше в дом, нашёл дневник, долистал до строчки 75 и заменил её на «Пошел в баню». На следующий день Гоша достал дневник, долго искал в нём запись про долг Гарику, но не нашёл и пришел извиняться.

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

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

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

0000 – начальный хеш (ограничимся для простоты четырьмя знаками)
1. Сходил в магазин – 4178 (хеш от 0000 и «Сходил в магазин»)
2. Попил пиво – 4234 (хеш от 4178 и «Попил пиво»)

4492
75. Дал в долг 300 рублей Гарику – 1010
76. Посмотрел фильм – 8204 (хеш от 1010 и «Посмотрел фильм»)

Если теперь какой-нибудь Гарик захочет изменить строчку 75, то изменится и хеш этой строчки (он будет не 1010, а чем-то другим). Это, в свою очередь, повлияет на хеш строчки «76. Посмотрел фильм» (он будет не 8204, а чем-то другим), и так далее до конца дневника. Теперь ради одной записи Гарику придётся подменить весь дневник после неё, что трудозатратно.

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

Чудом Гоша заметил следы таджиков у себя дома, и раз такое дело, решил усложнить способ подделки дневника: «Теперь, — решил Гоша, — я буду в конце каждой записи в скобочках добавлять какое–нибудь число („нонс“), а подбирать его буду так, чтобы каждый хеш заканчивался на два нуля». Единственный способ это сделать — тупо перебирать числа, пока не найдется нужный хеш:

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

1300
75. Дал в долг 300 рублей Гарику (67) – 9900
76. Посмотрел фильм (81) – 8200 (хеш от 9900 и «Посмотрел фильм (81)»)

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

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

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

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


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

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

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

 

  • 2
  • 1
  •  
  •  
  •  
  •  
  •  
    3
    Shares

Читайте также:

комментария 2

  1. Анастасия:

    У вас очень хорошие способности к педагогике. История про Гарика и Гошу – это просто то, что надо для толкового и понятного объяснения технологии блокчейна. Спасибо просто огромное. Думаю. что для программистов и раньше всё было понятно, а вот для понятия простого обывателя в самый раз.

  2. Виктория:

    Очень интересно! Тема сложная, но это в статье она раскрыта максимально доступно для понимания. Спасибо!
    Жду новых тем)

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *