Как хранить данные в блокчейне
Перейти к содержимому

Как хранить данные в блокчейне

  • автор:

Как работает блокчейн

Как работает блокчейн Фото 1

Блокчейн (blockchain, дословно «цепочка блоков») – это технология хранения информации. Впервые на практике она была использована в октябре 2008 года вместе с появлением первой криптовалюты – биткоина. На сегодняшний день криптовалюта остается основным направлением ее применения, однако постепенно она также распространяется и на другие отрасли, например, операции с финансами, идентификацию клиентов или кибербезопасность, поскольку технология обеспечивает максимальную защиту данных.

Фактически, блокчейн представляет собой базу данных – условную таблицу, хранящую несколько основных полей с информацией. Например, в случае с криптовалютой, в нем хранятся данные о транзакциях: кто, кому, когда и какое количество активов перевел.

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

Как работает блокчейн?

В основе технологии лежат 2 ключевые особенности:

  1. Существующие в цепочке записи не могут быть изменены. В обычной базе данных практически любое поле при необходимости подлежит изменению, как, например, меняется имя владельца собственности в реестре.
  2. Данные хранятся и обрабатываются децентрализовано. Если в банке существует условный сервер с БД, куда группа сотрудников заносит информацию о клиентах, блокчейн не только не имеет центрального сервера, но и единого «управляющего» – лица или компании, которая бы вносила изменения.

Непосредственно работа блокчейна организована следующим образом:

  • Пользователем формируется транзакция. Например, он платит криптовалютой со своего кошелька в интернет-магазине. В транзакции четко указан старый владелец актива, его объем, и новый владелец.
  • Детали транзакции формируются в блок.
  • Информация в блоке проверяется. Например, необходимо проверить, достаточная ли сумма средств хранится на счете пользователя в момент совершения покупки.
  • После прохождения проверки блок с транзакциями присоединяется в конец цепочки – того самого блокчейна, и транзакция считается завершенной.

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

Как защищаются данные?

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

Безопасность строится не только на использовании хэшей, но и на шифровании, которое не позволяет узнать, какие именно данные хранятся в каждом блоке. Для этого используются 2 ключа шифрования – открытый, соответствующий активам и хранящийся в блокчейне в открытом доступе, и закрытый, использующийся для подписания транзакций. Подробнее о ключах мы расскажем в будущих материалах.

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

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

Рассмотрим пару примеров:

  • В доме одного из майнеров отключается интернет, соответственно, копия блокчейна на его компьютере мгновенно теряет актуальность, так как за период его отсутствия в сети в цепочке могут появиться тысячи новых транзакций и сотни блоков. При этом при возвращении в онлайн система автоматически сравнит актуальность копии, хранящейся на данном компьютере, и скопирует актуальную версию базы данных, чтобы он мог продолжать участвовать в майнинге. За счет того, что в сеть входят тысячи отдельных компьютеров, отключение отдельной машины и даже десятка и сотни майнеров не будет иметь никаких последствий для работы всей системы. Собственно, благодаря такому подходу, блокчейн, использующийся для работы биткоина, не переставал функционировать с самого момента запуска.
  • Хакер взламывает копию блокчейна на своем ПК и изменяет сумму, поступающую на его кошелек, увеличивая ее в несколько раз. При подключении к сети эти данные будут проверены и сравнены с несколькими другими копиями. Чтобы они были признаны верными, аналогичная сумма должна быть указана в большей части всех копий блокчейна, хранящихся в сети. Соответственно, изменения всего в одной из них будут расцениваться как повреждение копии, ошибка, и будут автоматически устранены; сумма на счет злоумышленника перечислена не будет.

И последний интересный момент, а точнее, вопрос, связанный работой блокчейна: зачем майнерам постоянно держать свои компьютеры включенными, если это ведет к повышению счетов за электроэнергию и износу самого оборудования? Почему они продолжают участвовать в работе системы? За предоставление вычислительных мощностей и обработку информации они получают вознаграждение – криптовалюту, которая использует поддерживаемый ими blockchain. Собственно, из-за этого под словом майнинг обычно подразумевается именно получение криптовалюты с помощью компьютера.

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

Часть 2. Где хранить данные децентрализованным приложениям на блокчейне?

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

Итак, если у нас есть децентрализованное приложение, какие требования к хранилищу данных стоило бы предъявить? Мы предлагаем следующие требования

  • Распределенность — поскольку вся инфраструктура блокчейна и приложений на нем распределенная, хранилище данных также должно быть распределенное и децентрализованное.
  • Публичность — блокчейн позволяет всем желающим добавлять своё оборудование в сеть. Логично было бы ожидать того же от хранилища данных.
  • Устойчивость к проблеме византийских генералов и другим типам атак в публичной сети — в публичной распределенной сети без этого никак.
  • Поддержка шардинга — если мы ожидаем, что приложение будет популярно и будет хранить огромные объемы данных, то хорошо бы воспользоваться мощностью сети, чтобы увеличить максимальные объемы хранения. Полная репликация данных на каждом узле, разумеется, уменьшает шансы потери данных в случае проблем с отдельными узлами. Однако в случае большой мощности сети, например, сотни или тысячи серверов, дублировать все данные на всех серверах чрезвычайно избыточно, и можно уменьшить уровень репликации в пользу увеличения максимального суммарного объема данных. То есть, если у нас N серверов, то каждая запись должна реплицироваться только на m из них, m< N. Это позволит линейно увеличивать суммарный объем хранимых данных добавлением серверов.
  • Скорость — для популярных приложений могут потребоваться сотни тысяч, если не миллионы транзакций по сохранению или чтению данных в секунду
  • Структурированность — хранилище должно быть способно сохранять внутреннюю структуру данных, чтобы давать возможность приложениям связывать отдельные записи между собой
  • Удаление данных — хранилище должно поддерживать удаление более ненужных для приложения данных, чтобы освободить место
  • Вторичные ключи,
    полнотекстовый поиск, язык запросов
    — Приложения должны иметь возможность осуществлять быстрый поиск по хранимым данным, учитывая их внутреннюю структуру

IPFS

IPFS (InterPlanetary File System) — технология распределенной файловой системы, основанная на DHT (Distributed Hash Table) и протоколе BitTorrent. Она позволяет объединить файловые системы на различных устройствах в одну, используя контентную адресацию.

Достоинства:

  • Каждое устройство хранит только те файлы, которые ему нужны, плюс метаинформацию по расположению файлов на других устройствах. Поэтому не требуется доп. мотивация за хранение файлов.
  • Нет необходимости доверять пирам, потому что адресация файлов осуществляется по содержимому.
  • Устойчивость к флуду (загрузке ненужных файлов в сеть), потому что файлы размещаются только на собственное устройство.
  • Высокая пропускная способность (благодаря BitTorrent)
  • Хранение только файлов (неструктурированной информации).
  • После размещения файла нельзя выходить из сети, пока он по ней не разойдется.
  • Хранение данных другими устройствами не гарантировано, для гарантированного предоставления своего файла другим нужно быть онлайн
  • Файлы статичны (неизменяемы)
  • Удаление файла в принципе не предусмотрено.

Распределенные файловые хранилища

Такие хранилища позволяют объединять отдельные устройства в общее облачное хранилище. В результате пользователи могут хранить там свои файлы так же, как они это могли бы делать в классическом централизованном хранилище, например, Dropbox, но дешевле. Владельцы устройств (“фермеры”), предоставляя место для хранения чужих файлов, получают за это деньги от пользователей соответственно своему вкладу. Чтобы измерить вклад, обеспечить надежность хранения и пресечь злоупотребления, используются различные проверки, например, proof of storage (доказательство принятия файла), proof of retrievability (доказательство, что файл в наличии и может быть извлечен), основанные на криптографии. За успешное прохождение проверки пользователь платит, а фермер получает некоторую сумму в криптовалюте.

Строятся такие проекты, в основном, с использованием технологии DHT и контентной адресации (когда хэш от файла является его идентификатором). Некоторые дополнительно используют смарт контракты.

Таких проектов на рынке на текущий момент довольно много, например, Sia, Storj, Ethereum Swarm, MadeSAFE. Они все построены по схожим принципам. Причем Ethereum Swarm задумывался в том числе и для обеспечения удобного хранилища файлов для dApps.

Достоинства:

  • Файлы хранятся в облаке и доступны независимо от доступности их владельца.
  • Высокая пропускная способность.
  • За счет финансовой мотивации обеспечивается надежность хранения и извлечения файлов.
  • Удаление ненужных файлов возможно
  • Хранение только файлов (а не структурированной информации)
  • Файлы статичны
  • Хранение небесплатно

Распределенные базы данных

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

Для наших нужд требуется именно распределенная база данных, разумеется, устойчивая к разделению и доступная — нам необходимо быстро получать ответ из неё, хотя, возможно, и не самый свежий. Это ограничивает наш выбор рядом NoSQL баз данных, потому что ACID SQL СУБД в первую очередь обеспечивают согласованность.

Реализаций распределенных NoSQL баз данных великое множество. Например, MongoDB, Cassandra, RethinkDB. Все они способны работать с большим количеством реплик, объединяющихся в кластер. Клиент работает с одной из реплик, а данные автоматически синхронизируются с остальными. Для балансировки нагрузки может использоваться шардинг, когда часть данных хранится только на части реплик. Добавление в кластер новой реплики практически линейно масштабирует кластер, причем некоторые реализации (например, Cassandra) позволяют реплике автоматически принять на себя часть работы кластера.

NoSQL базы данных обеспечивают “целостность в конечном итоге” (eventual consistency), то есть, данные становятся согласованы через некоторое время, когда отдельные реплики синхронизируются. В этом они похожи на блокчейн — подтверждение транзакции тем вероятнее, чем больше времени прошло.

NoSQL базы данных могут хранить как просто ключ-значение, так и поддерживать внутреннюю структуру значения, а также дополнительные индексы. Наиболее продвинутые имеют также базовую поддержку транзакций и SQL-подобный язык запросов (например, Cassandra).

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

Достоинства:

  • Высокая скорость
  • Линейное масштабирование скорости и размера хранилища
  • Устойчивость к недоступности отдельных реплик
  • Зрелые реализации
  • Необходимость доверять пирам — неустойчивость к проблеме византийских генералов.

BigChainDB

Существует реализация блокчейна под названием BigChainDB или, как она ещё называется, IPDB (InterPlanetary DataBase), которая часто упоминается как решение всех проблем с хранилищем данных. Авторы заявляют очень высокую скорость транзакций (1 млн/сек), огромную емкость хранилища (за счет распределенного хранения с частичной репликацией). BigChainDB получает эти преимущества за счет упрощенного консенсуса при формировании блоков, а также за счет хранения всех блоков и транзакций в существующей реализации noSql базы данных — RethinkDB или MongoDB.

К сожалению, подобная архитектура имеет существенный недостаток — каждый узел имеет полные права на запись в общее хранилище данных, а значит, система в целом неустойчива к проблеме византийских генералов. Авторы этого проекта знают об этом, обещая подумать об этом позже. Однако исправление фундаментальных проблем в базовой архитектуре после выпуска продукта весьма трудоёмко и чаще всего невозможно, потому что может привести к существенно другому продукту с другой архитектурой. Такое легкое отношение к фундаментальной проблеме вызывает критику проекта со стороны сообщества, потому что демонстрируемые высокие скоростные и объёмные характеристики BigChainDB в условиях отсутствия BFT (Byzantine Fault Tolerance) не так уж и отличаются от характеристик, демонстрируемых изначально noSql базами данных RethinkDB и MongoDB, которые используются ею для хранения данных. Но раз уж всё равно требуется полное доверие между узлами, то почему не пользоваться указанными базами данных напрямую?

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

Достоинства:

  • Скорость и хранилище, сопоставимое с распределенными noSql базами данных
  • По сути, это и есть обычная noSql база данных, дополненная недостатками блокчейна
  • Неизменяемость (данные нельзя удалить легально, но можно злонамеренно)
  • Неустойчивость к проблеме византийских генералов, следовательно, невозможность использования в публичной сети

Выводы

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

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

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

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

  • Криптография
  • Open source
  • Анализ и проектирование систем
  • NoSQL
  • Big Data

Часть 1. Где хранить данные децентрализованным приложениям на блокчейне?

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

А что же это такое блокчейн?

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

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

Благодаря этому своему свойству блокчейн проекты могут быть публично децентрализованы. То есть, кто угодно может поставить рабочий узел блокчейна и генерировать новые блоки. В большинстве реализаций блокчейна за генерацию блока дают награду — этот процесс называется майнинг. А поскольку майнить сложно, а результаты твои легко могут быть проверены, то выгодно действовать только честно. Иначе потратишь ресурсы на майнинг, а другие майнеры твой блок не примут — вся работа насмарку. Таким образом, при полной децентрализации и независимости отдельных узлов сеть блокчейнов работает как единое целое.

Но ладно, допустим, одного нечестного майнера легко вычислить и проигнорировать. Но что, если их много, и они сговорились? Представьте, что все люди вокруг вас считают красный свет зеленым. 🙂 И смотрят на вас, как на ненормального, если вы считаете иначе. Социальные эксперименты показывают, что большинство людей в такой ситуации начинают сомневаться и присоединяются к мнению большинства. А ведь в блокчейне как раз и работает правило большинства!

Подобная проблема выяснения истины в условиях, когда твои собеседники могут бессовестно врать, была названа Лесли Лампортом «Проблемой византийских генералов», а решена двумя годами ранее в 1980 году им же совместно с другими авторами. Было показано, что при n шпионах, которые могут врать и искажать информацию, консенсус между участниками может быть достигнут при общем количестве участников 3n+1. А если гарантировать, что шпионы не могут искажать переданную через них сообщения, то достаточно и 2n+1. В блокчейне за счет электронной подписи зловредные узлы не могут искажать информацию, поэтому если в блокчейне менее половины зловредных узлов, то сеть устойчива.

Устойчивость сети к зловредным узлам называется устойчивостью к византийской проблеме (Byzantine Fault Tolerance, BFT). BFT очень важна для публичных сетевых систем, в которые могут свободно добавляться произвольные узлы. Именно такими системами является большинство проектов на блокчейне.

Применение блокчейна не ограничивается созданием криптовалют. Внутрь блока можно записывать что угодно. В биткоине туда записывается список новых транзакций, и применяется это для обмена криптовалютой между её владельцами. В NameCoin в блоках хранятся произвольные пары ключ-значение, что можно применить для создания децентрализованных DNS. В других реализациях блокчейна используются ещё какие-нибудь фишки. А вот Ethereum пошел значительно дальше. Он позволяет хранить в блокчейне не только транзакции, но и полноценные Тьюринг-полные программы, называемые смарт-контрактами, которые позволяют очень тонко настроить блокчейн на прикладную задачу. Например, NameCoin реализуется на Ethereum 5 строками кода.

Ethereum задумывался как универсальная платформа для создания децентрализованных проектов на основе блокчейна. Зачем реализовывать весь блокчейн заново, разворачивать собственную инфраструктуру, если можно парой-тройкой смарт контрактов реализовать то, что тебе нужно, на Ethereum, как, например, аналог NameCoin? Поэтому последнее время Ethereum переживает бурный рост. С марта 2017 ETH (криптовалюта Ethereum) всего за два месяца выросла в цене в 5 раз, и рост продолжается. На Ethereum работают уже сотни приложений, например, социальная сеть AKASHA, биржа фрилансеров Ethlance, игра в слова, да много их!

Блокчейн со смарт-контрактами предоставляет приложениям всю инфраструктуру. Приложения имеют выполняемый на блокчейне код в смарт контрактах. Приложения могут хранить в блокчейне любую информацию, передавая её в свои смарт контракты как данные. Приложения могут читать эту информацию из блокчейна, потому что состояние блокчейна Ethereum — это, по сути, база данных ключ-значение.

Казалось бы, что ещё нужно? Приложения получаются действительно децентрализованными, неподверженными цензуре и запрещению. В общем, блокчейн — это сплошные достоинства! Но если бы всё было так хорошо… При создании действительно мощных приложений сразу обнаруживаются и недостатки.

Неизменяемость. Неизменяемость — это, конечно, хорошо. Именно неизменяемость даёт блокчейну публичность и BFT. Однако есть и обратная сторона медали. Все данные, которые приложения пишут в блокчейн, остаются там навсегда. Поиграли в слова — блокчейн это запомнил. Разместили информацию в социальной сети — она навсегда сохранена в блокчейне, даже если вы потом удалили свой профиль. Взрывной рост числа приложений на блокчейне приводит к сильному раздуванию цепи блоков в размере. Уже сейчас размер полного блокчейна Ethereum перевалил за 130Гб, хотя он работает меньше 2 лет. У биткоина меньше при его солидном возрасте более 7 лет.

Конечно, в некоторые реализации Ethereum включают технологию State Tree Pruning, которая позволяет хранить только последнее состояние блокчейна, с ограниченной историей примерно на сутки, что на текущий момент позволяет сократить хранимую информацию в 20 раз. Например, go-ethereum full node требует для хранения блокчейна 130 Гб, а Parity с поддержкой данной технологии — всего 6 Гб. Однако, учитывая, что рост числа приложений только начинается, а каждому узлу Ethereum приходится хранить все данные всех приложений, это выглядит хоть и необходимой, но всего лишь отсрочкой проблемы. С ростом размера блокчейна он перестанет помещаться на массово выпускаемые жесткие диски, его обслуживание станет по карману лишь большим организациям, что ведет к опасной централизации — сосредоточению контроля над более чем 50% сети у одной организации. Это может нарушить BFT.

Медленность транзакций. За свою устройчивость блокчейны расплачиваются скоростью транзакций. У биткоина 7 транзакций в секунду, у Ethereum — 15. И это на всю сеть, потому что каждый узел полностью реплицирует другие узлы. Добавление нового узла повышает устойчивость системы, но никоим образом не увеличивает скорость её работы или максимальный объём хранения данных. То есть, изменение данных (а каждое изменение данных в блокчейне — это транзакция) является бутылочным горлышком. Популярные приложения сразу же натолкнутся на это ограничение.

Примитивное хранение данных. При том, что состояние блокчейна уже является базой данных «ключ-значение», она довольно примитивна. Поиск возможен только по первичному ключу, объем хранимых данных очень ограничен. Для серьёзных приложений этого явно недостаточно.

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

Но ведь существующие приложения, например, AKASHA как-то выкручиваются… В следующей части мы рассмотрим существующие подходы к решению этой проблемы.

  • blockchain
  • cryptocurrency
  • ethereum
  • bitcoin
  • smart contracts
  • decentralized systems
  • decentralization
  • data storage
  • базы данных
  • nosql

Как использовать блокчейн для хранения информации

По данным PR Newswire объем рынка облачных хранилищ вырастет с 30 млрд долл в 2017 году до 90 млрд долл к 2022 году при годовом темпе роста 24%. Это означает, что данный сектор станет одним из самых быстрорастущих в мировой экономике и блокчейн будет иметь решающее значение для его успеха. И вот почему.

Традиционные хранилища данных (CRUD)

Самый простой способ сохранить информацию в интернете — использовать облачные сервисы, например Google Drive, MySQL и MongoDB. В этом случае пользователь получает доступ к хранилищам компании просто так или в обмен на платную подписку. При этом компания сохраняет контроль над базой данных и предоставляет клиентам право доступа к хранилищам, а также отвечает за безопасность и сохранность данных.

На практике это выглядит следующим образом:

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

Это стандартная модель, которая доминирует на рынке. У нее два преимущества:

  1. пользователь может оперировать четырьмя ключевыми функциями: Create, Read, Update и Delete — вместе это называется CRUD;
  2. пользователь можно быстро загружать и выгружать данные.

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

Именно потому кража персональных данных стала нормой в XXI веке. К примеру, 19 ноября 2018 года власти США опубликовали результаты расследования по делу о краже персональных данных 500 миллионов клиентов гостиничной сети Marriott. Да и краже пикантных фото знаменитостей из iCloud уже никто не удивляется.

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

Хранилища данных на блокчейне

В основе блокчейна последовательности блоков, каждый из которых несет в себе некий объем информации. Данный объем ограничен фреймворком блокчейна. Например, для Биткоина — это 1 MB. Ограничение показывает максимальный размер файла, который можно загрузить в блокчейн Биткойна. Для хранения информации о транзакциях 1 MB достаточно, однако, если требуется сохранить изображение или видеофайл, нужно искать другое решение.

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

В 2017 году подсчитали, что загрузка 1 KB информации в блокчейн обходится пользователям в 2 американских доллара. Выходит, загрузка в блокчейн, например, текстового файла размером в 600 KB обойдется пользователям в 1 200 долл, фильма размером в 5 GB — больше 10 млн долл. Вероятно, сейчас цена существенно ниже, так как рынок просел, но она все еще заоблачная.

Варианты использования блокчейна для хранения данных

Хранение всего в блокчейне

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

  1. Дробление файла на сегменты (осколки), размер которых меньше размера блока. Таким образом, даже самый крупный файл можно записать на блокчейн с небольшим размером блока.
  2. Шифрование данных в осколках, чтобы только их собственник мог понять, что в них записано. Это позволит хранить информацию в открытом блокчейне и быть уверенным в ее конфиденциальности.
  3. Распределение осколков по сети блокчейна. Благодаря этому файл будет сохранен в неизменном виде, пока хотя бы один пользователь синхронизирован с блокчейном.

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

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

В-третьих, неизменность приведет к еще одной проблеме — лавинообразному росту размера блокчейна. Если информацию нельзя удалить, она будет только накапливаться, что со временем сделает размер блокчейна слишком большим для обычного пользователя. Например, сейчас размер блокчейна Биткойна – 220 GB, Эфириума — 600 GB. Это уже слишком много для смартфонов, планшетов и значительной части ноутбуков.

Подытоживая, можно сказать, что хранение информации непосредственно в блокчейне не лучшая идея, если речь идет о больших данных. Этот вариант подойдет лишь в тех случаях, когда объем информации находится в пределах нескольких килобайт. Например, когда речь идет о финансовых транзакциях, STO, персональных данных или документообороте.

Одноранговые файловые системы

Речь идет о таких способах хранения, как, например, Межпланетная файловая система (IPFS). Эта блокчейн-технология выстроена на протоколе BitTorrent, который подразумевает разбивку файлов на осколки и их хранение в нескольких экземплярах на компьютерах участников системы.

У этого подхода несколько преимуществ:

  • файл будет скачан пользователями, только если он кому-то интересен;
  • популярные файлы скачиваются/раздаются очень быстро;
  • данные адресно зависимы, поэтому подделать внутреннее содержание файла невозможно;
  • это одноранговое решение (peer-to-peer).

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

Сравнение протоколов HTTP и IPFS

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

Децентрализованные облачные хранилища

Это, по сути, обычные облачные хранилища вроде Dropbox. Только данные размещаются не на серверах компаний, а на устройствах пользователей, которые сдают их в аренду. Подобных стартапов много, например Swarm, Storj или Sia.

Визуализация процесса выгрузки в Storj

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

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

Распределенные базы данных

Если нужно хранить большие объемы структурированной информации и искать контент по запросам, следует обратить внимание на NoSQL. SQL не подходят, поскольку информация в них не может быть распределена на осколки из-за ограничений эфристичекой теоремы Брюера. Чтобы сделать базу данных по-настоящему распределенной, нужно пожертвовать доступностью и согласованностью.

Именно это делают базы данных NoSQL — жертвуют согласованностью узлов блокчейна, заменяя ее «eventual consistency» (узлы становятся согласованными спустя определенное время) ради доступности. На основе этого подхода реализовано много проектов, например RethinkDB, Apache Cassandra, MongoDB и другие. И это отличные кейсы — отказоустойчивость, высокая скорость, простая горизонтальная масштабируемость и поддержка богатого языка запросов.

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

Кейсы: блокчейны для хранения информации

BigChainDB

Облачное хранилище с огромным объемом и очень быстрыми транзакциями. Выстроено на кластере RethinkDB и использует механизмы NoSQL для хранения блоков, благодаря чему обладает высокой отказоустойчивостью и пропускной способностью.

Схема работы BigChainDB

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

  • деловодство и юриспруденция;
  • бухгалтерская отчетность;
  • отслеживание активов;
  • финансовые данные.

Storj и Sia

Это компании, которые работают как торговые площадки. Они обещают более дешевое, быстрое и безопасное хранилище. Однако это вовсе не означает, что их услуги дешевле, чем Google, Amazon или DropBox. Просто они получают прибыль не только с арендных ставок, но и с комиссий по проведению транзакций, связанных с загрузкой и извлечением данных.

Схема работы Storj и Sia — это, по сути говоря, посредничество между теми, кто сдает винчестеры в аренду, и теми, кто их арендует. Блокчейн используется для реестра сделок, финансовых расчетов и проверки подлинности файлов в базах данных. При этом данные пользователей хранятся вне фреймворка и могут быть удалены или стать недоступными в любое время, если арендодатели решат удалить файлы или на их стороне случится форс-мажор.

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

TiesDB

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

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

Сравнение TiesDB, BigChainDB и IPFS

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

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

Filecoin

Платформа, в основе которой те же наработки, что и в Storj или Sia. Разница лишь в двух деталях:

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

С помощью этих нововведений, а также уникального механизма консенсуса, стимулирующего увеличение дискового пространства в сети, Filecoin намерен обойти Google и Amazon по емкости хранилищ в ближайшие несколько лет.

Maidsafe

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

  • Self-шифрование: данные, шифрующие сами себя. Когда файл загружается в сетевую структуру Maidsafe, он разбивается на множество небольших осколков, которые самостоятельно зашифровываются и распространяются по сети. В такой форме файл становится нечитаемым для всех, кроме владельца.
  • Децентрализованное кэширование данных. Данные в SAFE Network будут храниться по всему миру, а не на серверах одной компании или сети компаний. Это позволит сделать платформу автономной и повысит уровень защищенности информации.
  • Доступность данных. Сеть постоянно создает и поддерживает дубликаты всех файлов, которые она хранит. Эта функция ведет к избыточной информации, что должно защитить ее от потери вследствие отключения отдельных узлов.

Последнее слово

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

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

Оцените (373 оценки — 4.3 из 5)

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

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