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

Есть такое понятие как «база данных». В понятие базы данных входит организация хранения информации, и работа с этой информацией. В качестве примера будет использована старая телефонная записная книжка — классический образец базы данных.
Туда записывали имя, фамилию, телефонный номер родственника, друга, или коллеги. Иногда добавляли дату рождения, должность и прочую сопутствующую информацию. По мере изменения информации в записи вносились корректировки. Устаревшие данные вычёркивали, записывали новые. Сегодня подобными книжками пользуются не часто. В мире правят цифровые технологии. Базы данных хранятся в телефонах, смартфонах, компьютерах, коммерческих компьютерах которые чаще называют серверами и т.д.
Визуальное представление цифровой базы данных выглядит как запись в таблице.
С такой базой данных очень удобно работать. Можно искать записи по любой строке, любому столбцу. В них можно вносить изменения, удалять, сортировать по отдельным признакам. Например, можно найти выделить всех абонентов начинающихся на буку «П». Или отсортировать по дате рождения.
Что такое блокчейн
Блокчейн это тоже база данных. Но её визуально представление выглядит как очень длинная непрерывная строка.
1*Вася*Васечкин*123-12-12*1990-01-01*51A3176CC9E16799F9D93A28B0F04DB9*2*Петя*Петров*321-32-32*1900-12-12*825965D8B15ADDCF8A207AB3A648099C*3*Иван*Иванов*900-90-90*1980-07-19*A23D640AFE4A47944DE67E6C60552DE1
Скорее всего ваш браузер разобьёт строку на несколько частей, но это именно одна длинная строка.
Однако помимо того, что это не таблица а одна строка, есть ещё одно важное отличие. Когда в блокчейн поступает запись, 1*Вася*Васечкин*123-12-12*1990-01-01, в конец строки добавляется хеш этой записи 51a3176cc9e16799f9d93a28b0f04db9.
Хэш-функция — когда в результате математических вычислений получают набор символов фиксированной длины на основе данных произвольной длины.
Данная запись называется блоком. Если строка будет отличаться хотя бы на один символ, то хеш в блоке неизбежно будет другим. Все следующие записи поступающие в блокчейн будут заканчиваться хешем этой записи + хеш предыдущей записи.
Как устроен блокчейн
Допустим вы решили в вашей фирме использовать цифровую бухгалтерию на основе блокчейна. Ваша программа записывает в блокчейн расходы — минус сто рублей, минус двести рублей, минус триста рублей.
Это будет происходить так:
Первый блок: 1*-100*9982901219441adfebb6ec16dfe8a509*
Описание:
- * — разделитель данных
- 1 — номер блока
- -100 поступившие данные
- 9982901219441adfebb6ec16dfe8a509 — хеш от текста «-100».
Второй блок и все остальные будут немного другими: 2*-200*a0d9d8ea41aeb91b332adfffe20fe8b6
Описание:
- * — разделитель данных
- 2 — номер блока
- -200 — поступившие данные
- a0d9d8ea41aeb91b332adfffe20fe8b6 (хеш текста «-200» + хеш предыдущей записи)
Это ключевой момент! В каждый последующий блок записывается хеш предыдущего блока. Таким образом получается запись непрерывной цепи блоков.
Разными цветами обведены блоки. Все вместе они представляют собой цепь данных.
Блокчейн — blockchain (block – блок, chain — цепь).
Если какой-то момент, один из сотрудников вашей фирмы решит внести изменения в запись прошлых расходов, то у него возникает две проблемы.
- В блокчейне нельзя просто изменить какой-то фрагмент существующей записи. Блокчейн только дописывает в конец строки. Т.е с помощью стандартной программы записи это не осуществить.
- Допустим он взломал хранилище и получил доступ к самому блокчейну, как к базе данных. Если он изменит в первом блоке сумму расходов с -100 на -200 (а разницу положить себе в карман), хеш этого блока изменится.
Хеш от текста -100 = 9982901219441adfebb6ec16dfe8a509Хеш от текста -200 = 31a2d5822a3db533b5e803e3889788fa
Но как вы помните, в следующем блоке содержится хеш который основывался на предыдущей записи. Программное обеспечение блокчейна постоянно проверяет все записи и сверяет записанные хеши. Если в каком-то месте будет несоответствие, то работа блокчейна будет остановлена и будет выведен номер блока который содержит ошибку. Это означает, что для безболезненного внесения изменений в уже существующие записи придётся менять хеши во всех следующих блоках.
Так мы плавно перешли ко второй особенности блокчейна. Сила блокчейна в том, что он размещён на нескольких компьютерах (чем больше и сложнее блокчейн, тем больше вероятность, что для работы с ним потребуется коммерческий компьютер — сервер). Когда несколько серверов работают с блокчейном, это называется сетью блокчейна.
Сеть блокчейна работающего с биткоином состоит из нескольких тысяч серверов разбросанных по всему миру.
В момент записи данных, на всех серверах происходит проверка соответствия записи с хешем из предыдущего блока. И если на каком-то сервере запись будет не соответствовать, то этот сервер будет принудительно синхронизирован. Т.е. его блокчейн будет перезаписан. Если по какой то причине такой сервер будет отказываться синхронизироваться и его записи постоянно будут не соответствовать с записями из большинства других блокчейнов, то такой сервер будет отключён от сети этого блокчейна.
Существует теоретический способ как обойти проблему отказа сети блокчейна принимать изменение существующей записи — это называется «атака 51». Это когда атакующему необходимо завладеть более половины всех серверов сети блокчейна (более 50%). Когда он одновременно подсунет во все свои сервера изменённую базу блокчейна, то поскольку это произойдёт на большинстве серверов, все остальные будут принудительно синхронизированы с новой, изменённой злоумышленником, базой.
Плюсы и минусы блокчейна
И так, сила блокчейна заключается в технологии записи данных в виде непрерывной цепочки которую нельзя изменять. Можно только дописывать. Чем больше независимых серверов обслуживает сеть этого блокчейна, тем больше гарантий на то, что данные в блокчейне неизменны. Однако принцип записи в цепочку одновременно является слабым местом.
Если блокчейн вашей фирмы работает на нескольких серверах которые подконтрольны только вам, то это значит, что у вас есть просто медленная и неповоротливая база данных.
Когда вы работаете с традиционной базой данных, вы можете искать данные по любым параметрам, с любой сложностью выборки. В приведённом ранее примере можно искать по именам, по возрасту и т. д. не затрагивая данные которые вам не интересны. Таким образом удаётся экономить массу ресурсов и времени не вычитывая из базы данные которые вам не нужны.
Если вы ищете некие данные в блокчейне, то вам придётся сначала перебрать все блоки которые были записаны, информацию из блоков записать в обычную базу, и только потом можно будет их обработать традиционными способами.
Существуют отдельные сервисы которые записывают данные блокчейна в обычные виды баз данных. Но никто не знает на сколько правдивы эти записи. И если вам нужны гарантировано верные данные, то услуги таких сервисов придётся игнорировать, и собирать информацию из блокчейна своими силами.
Для чего использовать блокчейн
Для каких целей может быть использован такой вид хранения данных как блокчейн? Для тех ресурсов, где важна история данных. Например, блокчейн биткоина по своей сути является бухгалтерской книгой. В нём записано кто, когда, кому, сколько биткоинов перевёл.
Блокчейн можно использовать для работы с недвижимостью. С его помощью можно будет отследить историю объекта. Когда построили, кому продали, кому подарили и т. д.
На блокчейне существуют блог платформы типа Steemit и GOLOS. На этих платформах платят токены за ваши статьи. Токены можно продать на бирже. На последнем работает даже лотерея. В него записывается кто, участвует в розыгрыше, кто и сколько получил призовых.
Криптовалюта — виртуальная монета блокчейна
Напоследок необходимо упомянуть ещё одну особенность блокчейна — виртуальные монетки или проще — «игровые баллы».
Для того чтобы сеть блокчейна работала на максимальном количестве независимых серверов, сам блокчейн создаёт виртуальные монеты, которые начисляет держателям серверов. А для записи в блокчейн, он часть монет забирает обратно. Таким образом получается круговорот виртуальных монет. Держатели серверов продают их желающим что-то записать в блокчейн. В процессе записи генерируются новые, которые начисляются держателям серверов и т. д.
На самом деле это очень упрощённые примеры. Существует множество методик начисления и распределения криптовалют и они гораздо сложнее чем я описал. Множество разновидностей блокчейна которые работают по разным схемам. Но для простого понимания самого принципа работы блокчейна этого достаточно.
Выводы
Подведём итоги, что такое блокчейн:
- Блокчейн — база данных в которую, строчка за строчкой, записывается информация.
- В публичном блокчейне нельзя незаметно удалить или подменить часть данных. Только записать новые данные.
- Для поиска данных в блокчейне приходится перебирать практически всю цепочку данных. А это энергозатратно.
- Для поддержания работы публичного блокчейна, разработчики предусматривают награды в генерации криптовалют.
Теперь вы знаете как это устроено! Будьте здравы, подписывайтесь на новости блока. Если возникли вопросы и предложения, пишите в комментарии.