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

Сначала вспомним про блокчейн


Блокчейн — это популярное название технологии распределенных реестров. Отличается от других подобных, что связывает блоки данных в цепочку используя для этого криптографический хеш. Эту цепочку возможно изменить только при условии соблюдения общего консенсуса, принятого между участниками (узлами) в такой сети.

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

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

Давайте попробуем сравнить


Современные СУБД это сложные программы и предназначены для хранения информации, чтобы ее было куда сохранить и где искать потом. Они имеют множество средств для ее защиты, в том числе точки отказа и репликации. Могут работать распределено. В чем же их отличие тогда и откуда такая тяга к БЧ у корпораций.

Скажем кое-какие организации хотят хранить свои данные так, как бы самостоятельно. Они заводят базу данных, любую и благополучно туда их вставляют.

Затем у них появляются партнеры, которые хотят клянчить немного оттуда и вставлять что-нибудь о своих клиентах, продукции и т.д. Тоже не вопрос мы же можем их синхронизировать, скажем, по REST, принцип транзакций прекрасно реализован в большинстве их движков, а принцип ключей (PK, UNIQUE) не позволяет вставить одно и тоже повторно и по-сути решает проблему двойной траты. И это все стандартные системы управления базами данных.

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

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

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

Кстати об открытости данных. Поскольку многие СУБД закрыты, то они не могут реализовать принципы доверия и это как бы намекает, что технология должна быть разделена и подходить для работы с любыми базами данных.

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

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

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