В этот раз хочется рассказать о том какие я вижу различия между блокчейном и обычными системами баз данных. Конечно не считаю что я нашел ответ, считайте это моими размышлениями.
Блокчейн — это популярное название технологии распределенных реестров. Отличается от других подобных, что связывает блоки данных в цепочку используя для этого криптографический хеш. Эту цепочку возможно изменить только при условии соблюдения общего консенсуса, принятого между участниками (узлами) в такой сети.
Проще говоря о технологии распределенных реестров или блокчейне, мы говорим о безопасности данных; такой их организации, где они защищены от внештатного изменения. Обеспечивается эта безопасность с помощью криптографии (данные в сети всегда подписываются, будь это транзакция или блок, а подпись проверяется перед тем как данные будут считаться достоверными), а все остальные компоненты представляют собой что-то более знакомое. Даже тот самый консенсус представляет в большей степени лотерею между участниками, которые выполняет некоторые правила. Выигрывает каждый раунд только один участник, которому выпадает честь отправить блок в сеть и все знают, что он выиграл раунд и принимают этот блок в свою цепочку.
Сетевые возможности протокола это несложно: в нем изначально из конфига, а затем при помощи сообщений от тех узлов к которым удалось подключиться считывается информация (сетевые адреса и всякая мета) и они хранятся в памяти чтобы с ними по очереди синхронизироваться. Количество таких узлов также можно задать в настройках при запуске сетевого ПО (ноды). В мета-эти ноды сообщают информацию о своей загрузке, и тогда зная это остальные соседи стараются меньше приставать к такой ноде.
Современные СУБД это сложные программы и предназначены для хранения информации, чтобы ее было куда сохранить и где искать потом. Они имеют множество средств для ее защиты, в том числе точки отказа и репликации. Могут работать распределено. В чем же их отличие тогда и откуда такая тяга к БЧ у корпораций.
Скажем кое-какие организации хотят хранить свои данные так, как бы самостоятельно. Они заводят базу данных, любую и благополучно туда их вставляют.
Затем у них появляются партнеры, которые хотят клянчить немного оттуда и вставлять что-нибудь о своих клиентах, продукции и т.д. Тоже не вопрос мы же можем их синхронизировать, скажем, по REST, принцип транзакций прекрасно реализован в большинстве их движков, а принцип ключей (PK, UNIQUE) не позволяет вставить одно и тоже повторно и по-сути решает проблему двойной траты. И это все стандартные системы управления базами данных.
Так зачем же понадобился блокчейн. Поглядывать на него стали из-за сложностей доверия в современных финансовых-процессах, а чуть позже и в производстве. Не доверяют там по-разному, и при всей идеальности современных СУБД им требуются постоянные изменения и доработки. И это в основном и относится к алгоритму консенсуса.
Если посмотреть новости по теме технологии блокчейна, то бьются в своих стартапах над протоколами (скорости и отказоустойчивости) и консенсусе (принципу доверия внутри сети).
При этом нет эталонного консенсуса, в зависимости от решаемых задач выбирают разные.
Конкуренция приводит к тому, что право внесения изменений в общую учетную книгу очень влияет на успешность участника, и всем хочется это сделать первыми (ну или вообще всегда), а это невозможно, должна быть принята только одна копия вносимых изменений иначе все остальные запутаются какую читать.
Вы скажете: почему бы не дать возможность всем по очереди. На самом деле так иногда делают и это способствует отличной производительности, но снижает безопасность. Дело в том что таким образом можно выяснить когда кто вносит изменения и это определенного рода централизует в момент генерации блока нас на ком-то конкретном, а если мы не доверяем ему, или доверяем только некоторым узлам, то уже сами отправители транзакций на внесение изменений будут отсылать их в момент, когда точно знают чья очередь.
С другой стороны это и принцип состязания между майнерами, то есть участниками желающими быть первыми в момент изменения блока. Особенно это актуально для систем с открытыми данными.
Кстати об открытости данных. Поскольку многие СУБД закрыты, то они не могут реализовать принципы доверия и это как бы намекает, что технология должна быть разделена и подходить для работы с любыми базами данных.
Как итог можно сказать, что мы говорим о системе технологий надстраиваемой над существующими базами данных, имеющую открытость и необходимость в постоянных изменениях и доработках всеми желающими.
Если говорить совсем откровенно это желание к идеализации учета данных в условиях конкуренции за эти данные. Некоторого рода гарантии участников сделки к благоприятному исходу своей деятельности.
Сама же по себе технология вносит популярность в электронный документооборот и его модификации к возникающим в процессе усложнения операций в нем.
Сначала вспомним про блокчейн
Блокчейн — это популярное название технологии распределенных реестров. Отличается от других подобных, что связывает блоки данных в цепочку используя для этого криптографический хеш. Эту цепочку возможно изменить только при условии соблюдения общего консенсуса, принятого между участниками (узлами) в такой сети.
Проще говоря о технологии распределенных реестров или блокчейне, мы говорим о безопасности данных; такой их организации, где они защищены от внештатного изменения. Обеспечивается эта безопасность с помощью криптографии (данные в сети всегда подписываются, будь это транзакция или блок, а подпись проверяется перед тем как данные будут считаться достоверными), а все остальные компоненты представляют собой что-то более знакомое. Даже тот самый консенсус представляет в большей степени лотерею между участниками, которые выполняет некоторые правила. Выигрывает каждый раунд только один участник, которому выпадает честь отправить блок в сеть и все знают, что он выиграл раунд и принимают этот блок в свою цепочку.
Сетевые возможности протокола это несложно: в нем изначально из конфига, а затем при помощи сообщений от тех узлов к которым удалось подключиться считывается информация (сетевые адреса и всякая мета) и они хранятся в памяти чтобы с ними по очереди синхронизироваться. Количество таких узлов также можно задать в настройках при запуске сетевого ПО (ноды). В мета-эти ноды сообщают информацию о своей загрузке, и тогда зная это остальные соседи стараются меньше приставать к такой ноде.
Давайте попробуем сравнить
Современные СУБД это сложные программы и предназначены для хранения информации, чтобы ее было куда сохранить и где искать потом. Они имеют множество средств для ее защиты, в том числе точки отказа и репликации. Могут работать распределено. В чем же их отличие тогда и откуда такая тяга к БЧ у корпораций.
Скажем кое-какие организации хотят хранить свои данные так, как бы самостоятельно. Они заводят базу данных, любую и благополучно туда их вставляют.
Затем у них появляются партнеры, которые хотят клянчить немного оттуда и вставлять что-нибудь о своих клиентах, продукции и т.д. Тоже не вопрос мы же можем их синхронизировать, скажем, по REST, принцип транзакций прекрасно реализован в большинстве их движков, а принцип ключей (PK, UNIQUE) не позволяет вставить одно и тоже повторно и по-сути решает проблему двойной траты. И это все стандартные системы управления базами данных.
Так зачем же понадобился блокчейн. Поглядывать на него стали из-за сложностей доверия в современных финансовых-процессах, а чуть позже и в производстве. Не доверяют там по-разному, и при всей идеальности современных СУБД им требуются постоянные изменения и доработки. И это в основном и относится к алгоритму консенсуса.
Если посмотреть новости по теме технологии блокчейна, то бьются в своих стартапах над протоколами (скорости и отказоустойчивости) и консенсусе (принципу доверия внутри сети).
При этом нет эталонного консенсуса, в зависимости от решаемых задач выбирают разные.
Конкуренция приводит к тому, что право внесения изменений в общую учетную книгу очень влияет на успешность участника, и всем хочется это сделать первыми (ну или вообще всегда), а это невозможно, должна быть принята только одна копия вносимых изменений иначе все остальные запутаются какую читать.
Вы скажете: почему бы не дать возможность всем по очереди. На самом деле так иногда делают и это способствует отличной производительности, но снижает безопасность. Дело в том что таким образом можно выяснить когда кто вносит изменения и это определенного рода централизует в момент генерации блока нас на ком-то конкретном, а если мы не доверяем ему, или доверяем только некоторым узлам, то уже сами отправители транзакций на внесение изменений будут отсылать их в момент, когда точно знают чья очередь.
С другой стороны это и принцип состязания между майнерами, то есть участниками желающими быть первыми в момент изменения блока. Особенно это актуально для систем с открытыми данными.
Кстати об открытости данных. Поскольку многие СУБД закрыты, то они не могут реализовать принципы доверия и это как бы намекает, что технология должна быть разделена и подходить для работы с любыми базами данных.
Как итог можно сказать, что мы говорим о системе технологий надстраиваемой над существующими базами данных, имеющую открытость и необходимость в постоянных изменениях и доработках всеми желающими.
Если говорить совсем откровенно это желание к идеализации учета данных в условиях конкуренции за эти данные. Некоторого рода гарантии участников сделки к благоприятному исходу своей деятельности.
Сама же по себе технология вносит популярность в электронный документооборот и его модификации к возникающим в процессе усложнения операций в нем.
TimsTims
СУБД выбирают не просто чтобы там что то хранить, но чтобы туда очень быстро писать, хранить гигабайты информации, используя индексы все это быстро читать, а ещё чтобы были транзакции, которые в случае чего друг с другом нормально бились, а балансы сводились. Всё это блокчейн не может, сравнивать их вот так напрямую нельзя.
vics001
Блокчейн на самом деле является БД типа Shared Nothing, в этих типах БД все выполняется на 1 ноде, в одном главном потоке (консолидируется), через 1 log. + Блокчейн добавляет синхронизацию между Shared Nothing nodes, но они все равно всех хранят.
В то время, как распределенные базы данных хранят свои участки независимо.
rusldv Автор
Действительно не нужно сравнивать их напрямую, это также было в мыслях, но я упустил в изложиложении, просто вопрос который интересовал многих заключался именно в этом и я постарался на него дать ответ в такой понятной форме.
Можно заметить, что для хранения данных, получаемых из блокчейна все чаще используют стороннюю базу, такую как Postgres и работают с нею, а особенности БЧ применяют для более специфических задач
aamonster
"Многих" – это лично вас?
Не, я бы понял, если бы вы задались вопросом "что общего между blockchain и базой данных" или "можно ли использовать blockchain как базу данных" (для этого вопроса, кстати, интересно посчитать цену такого использования).
rusldv Автор
Нет речь выше как раз о том, что это разное. База данных (имею ввиду СУБД) это технология хранения, а блокчейн это технология управления безопасностью.
aamonster
То есть вопрос был типа "Чёрное и белое. А есть ли разница?" с закономерным ответом "да, есть"?
Спасибо, кэп.
DrPass
Ваш ответ тоже не совсем корректный. Блокчейн в целом не решает вопросы доверия лучше, чем классическая СУБД. Вопросы доверия без блокчейна в общем случае давным-давно решены куда более продуктивным способом — классическое шифрование, ЭЦП. Блокчейн решает эффективнее, чем классическая СУБД, лишь одну частную группу задач — удостоверения операций в системе, в которой есть множество участников, для которых нет процедуры идентификации, и нет доверенной организации, которая бы руководила этой системой.
rusldv Автор
Да согласен Вы абсолютно правы. Я поэтому во второй части писал примерно то же самое.
Т.е о технологии гарантий в достаточно динамичной среде, под конкуренцией я понимал недоверие. Но вопрос этот решается посредстом консенсуса, а не блокчейна самим по себе и в этом кроется принцип его необходимости.
rusldv Автор
Меня еще вот интересует что, как Вы считаете, допустим есть конечный потребитель йогурта и он сканирует йогурт через блокчейн, но не знаком с процедурой консенсуса, то он доверяет блокчейну или нет, ведь с точки зрения потребителя он просто читает удобную для чтения выборку и не пойдет проверять. Вот биткоин только через несколько лет стал популярен, а с товарами и поставками что вообще может быть на Ваш взгляд?
DrPass
С товарами и поставками ничего не будет. Блокчейн там не приживётся по двум причинам:
1. Это централизованная среда, и вендор при желании и так прекрасно может раздавать сертификаты/удостоверения на отгружаемые партии товаров.
2. Участники цепочек поставок в массе своей вообще не заинтересованы в прозрачности отслеживания происхождения товара. Это нарушает и коммерческую тайну, и вредит их конкурентным преимуществам и, чего греха таить, схемам оптимизации налогообложения.
VolCh
Государство может обязать использовать прозрачные технологии.
DrPass
Ну может, в теории. А государство — это какие-то другие чуваки, не те, у которых заводы, газеты, пароходы?
rusldv Автор
Спасибо