Где хранятся данные блокчейн транзакций
Перейти к содержимому

Где хранятся данные блокчейн транзакций

  • автор:

Что такое блокчейн?

уход от сторонних посредников

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

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

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

Как работает технология блокчейн?

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

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

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

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

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

Децентрализованный траст.
Блоки блокчейна.
Алгоритмы консенсуса.
Узлы блокчейна.

Есть два основных типа узлов блокчейна.

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

Часть 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

Где хранятся данные блокчейн транзакций?

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

Давайте рассмотрим, что такое блокчейн, как записывается и хранится в нем информация.

Блокчейн — это децентрализованная общедоступная книга для записи транзакций и защиты сети.

Все данные блокчейна прозрачны и каждый при наличии хеша транзакции или номера счета может отследить перевод.

Данные транзакций открыто передаются всем узлам сети и проверяются на основе консенсуса участниками, называемыми майнерами.

Все транзакции на блокчейне зашифрованы, что обеспечивает безопасность блокчейна.

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

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

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

Любой блокчейн обладает следующими свойствами:

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

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

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

Распределенный реестр

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

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

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

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

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

Типы хранилищ данных в блокчейне

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

TiesDB: это децентрализованное приложение (dApps) на основе Ethereum для хранения нефинансовых данных и поиска в их документах. Данный метод позволяет осуществлять расширенный поиск и модификацию документа.

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

Распределенная база данных: для хранения данных можно использовать распределенные базы данных, такие как MongoDB, Apache и Rethink DB. Они быстры и универсальны, но не византийски проверены. Это означает, что любой хакер может испортить всю информационную базу, поскольку все узлы информации полностью доверяют друг другу.

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

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

Транзакции в блокчейне

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

Данные, хранящиеся в транзакциях, состоят из нескольких разных полей:

  • Адрес отправителя.
  • Адрес получателя.
  • Сумма транзакции.
  • Временная метка.

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

Различные типы данных хранилища блокчейна

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

Вот некоторые примеры наиболее популярных криптовалют:

Bitcoin: В блокчейне биткойна данные включают в себя всю историю всех биткойн-транзакций. Если в одном узле есть ошибка, он использует тысячи других узлов в качестве ориентира для исправления себя.

Ethereum: Блокчейн Ethereum использует структуру данных trie для хранения информации. Он отделяет временные данные от добытых данных транзакции. Данные добавляются в дерево транзакций только после подтверждения транзакции.

В Эфириуме существует три типа триов для хранения данных:

  • State Trie: это глобальное дерево состояний постоянно обновляется и содержит пару «ключ-значение» для каждой учетной записи в сети Ethereum.
  • Storage Trie: здесь хранятся данные контракта. Каждая учетная запись Ethereum имеет три дерева хранения. 256-битное хэш-значение корневого узла дерева хранения содержится в глобальном дереве состояний.
  • Транзакция: у каждого блока Ethereum есть своя отдельная шина транзакций. Блок содержит много транзакций.

Блокчейн представляет собой абсолютно новый подход для безопасной записи транзакций.

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

Оптимален ли блокчейн для хранения идентификационных данных?

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

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

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

Введение

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

Очень краткая история блокчейн-технологий

Историю технологий распределенной цепной записи данных принято вести с работы [1] Дэвида Чаума (David Chaum) 1979 года (перечень ссылок приведен в конце статьи). В течение долгого времени подобные технологии применялись для решения ряда частных задач, в качестве примера которых можно привести простановку меток времени на электронные документы (метка времени, идентификатор пользователя, запрашивающего метку времени, и хеш-код документа представляют собой коллекцию данных, подписываемую вместе с хеш-кодом предыдущей коллекции, что в результате образует немодифицируемую и привязанную ко времени цепочку данных), предложенную в работе [2] в 1991 г.

Начиная с 2008 г., блокчейн-технологии переживают бурный рост, триггером которого послужила вышедшая в указанном году работа Сатоши Накамото (Satoshi Nakamoto) [3]. В данной работе описана концепция построения криптовалюты (Биткойн) на основе цепочки связанных блоков, поддерживаемой сообществом взаимно недоверенных узлов с помощью механизма консенсуса (определяющего право добавления блока в цепочку) на основе доказательства проделанной работы (proof-of-work).

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

Одна из достаточно явно прослеживаемых современных тенденций состоит в усилении роли блокчейн-технологий в системах хранения и обработки идентификационных данных граждан. На текущий момент известно уже несколько реализаций на государственном уровне информационных систем, построенных на основе блокчейн-технологий и предназначенных для управления идентификационными данными граждан. В качестве примеров можно привести системы электронных удостоверений личности, развернутые в Бразилии и Эстонии [4, 5].

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

Паспортные данные – частный случай идентификационных данных

Паспортные данные в РФ представляют собой совокупность следующих данных для каждого гражданина [6]:

  • фамилия, имя, отчество, пол, дата рождения и место рождения;
  • сведения о регистрации гражданина по месту жительства и снятии его с регистрационного учета;
  • отметки об отношении к воинской обязанности граждан, достигших 18-летнего возраста;
  • отметки о регистрации и расторжении брака (указанные здесь и далее сведения могут отсутствовать в паспорте, поскольку вносятся по желанию его владельца [6]);
  • сведения о детях (гражданах Российской Федерации, не достигших 14-летнего возраста);
  • отметки о ранее выданных паспортах;
  • отметки о выданных действительных основных документах, удостоверяющих личность гражданина Российской Федерации за пределами территории Российской Федерации;
  • сведения о группе крови и резус-факторе;
  • сведения об идентификационном номере налогоплательщика.

Помимо перечисленной выше информации, в паспорте содержится фотография гражданина и образец его подписи.

Дополнительными атрибутами паспорта являются следующие данные:

  • машиночитаемая запись, содержащая основные сведения о владельце паспорта и самом паспорте;
  • серия и номер паспорта, наименование и код подразделения, выдавшего паспорт, а также дата выдачи паспорта;
  • обозначения типа документа, государства, выдавшего паспорт, и гражданства владельца паспорта.

Хранение паспортных данных в традиционной базе данных

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

1. Упрощенная структура записи паспортных данных

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

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

Если предположить, что подобная БД является основой некоторой совокупности государственных информационных систем, то можно также предположить, что информация из такой таблицы будет запрашиваться связанными информационными системами достаточно активно. При этом выборка информации может производиться по значениям или диапазонам значений практически всех полей приведенных таблиц: поиск граждан может осуществляться, например, по ФИО или только фамилии, номеру и дате выдачи паспорта (диапазону номеров/дат), подразделению, выдавшему паспорт, дате и месту рождения и т. д. Для ускорения подобных выборок содержимое БД индексируется по всем полям, по которым предполагается поиск, что увеличивает объем хранимых данных, но также значительно увеличивает быстродействие, практически обеспечивая независимость времени поиска от количества записей.

Далее, поскольку разнообразные потребители такой БД (например, различные ведомства РФ) могут иметь различающиеся права на доступ к разным столбцам таблиц, приведенная выше таблица «Гражданин» может быть по факту представлена совокупностью таблиц, связанных через идентификационный номер гражданина, каждая из которых содержит подмножество данных с одинаковыми правилами доступа к ним (см. рис. 2, связи на рисунке не приведены).

2. Видимо, так можно представить записи паспортных данных

Далее под записью буду подразумевать совокупность записей в таблицах 1…M, связанных одним значением идентификатора.

Хранение паспортных данных в блокчейне

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

3. Хранение записей в блокчейне

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

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

  • паспортные данные представляют собой конфиденциальную информацию (в РФ паспортные данные относятся к персональным данным, причем совокупность паспортных данных более 100 000 граждан предусматривает их отнесение к одной из максимально защищаемых категорий персональных данных [7]); при их хранении в блокчейне выглядит крайне сложным организовать надлежащее разграничение доступа к ним;
  • разрастание блокчейна, основной причиной которого является невозможность модификации – возможно только добавление данных (что подробнее будет рассмотрено в следующем подразделе);
  • хранение данных в традиционных БД позволяет использовать все их преимущества.

О последней из перечисленных выше причин следует сказать особо. Классические БД позволяют эффективно хранить данные и обеспечивать высокую скорость доступа к ним. Процитируем известную работу [8]: «If your requirements are fulfilled by today’s relational databases, you’d be insane to use a blockchain… Why? Because products like Oracle and MySQL have decades of development behind them. They’ve been deployed on millions of servers running trillions of queries. They contain some of the most thoroughly tested, debugged and optimized code on the planet, processing thousands of transactions per second. And what about blockchains? Well, our product was one of the first to market, and has been available for exactly 5 months, with a few thousand downloads.» («Если ваши требования удовлетворяются современными реляционными базами данных, было бы безумием использовать блокчейн… Почему? Потому что такие продукты, как Oracle и MySQL, имеют за плечами десятилетия разработки. Они были развернуты на миллионах серверов, выполняющих триллионы запросов. Они содержат одни из самых тщательно протестированных, отлаженных и оптимизированных кодов на планете, обрабатывая тысячи транзакций в секунду. А как насчет блокчейнов? Что ж, “наш продукт был одним из первых, вышедших на рынок, и был доступен ровно 5 месяцев, с несколькими тысячами загрузок”.»).

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

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

Фиксация записей с помощью блокчейна

Достаточно часто принято противопоставлять друг другу организацию хранения данных в виде блокчейна и в виде БД. Процитируем доклад Академии наук Китая (упоминавшийся мной в предыдущей статье) [9]: «Traditional databases have four classic operations of insert, delete, update, and select. The blockchain technology is equivalent to the databases of giving up deletion and update options, leaving only two manipulation, insertion and selection, through the “block-chain” structure of blocks and linked lists…» («Традиционные базы данных имеют четыре классические операции: вставки, удаления, обновления и выбора. Технология блокчейна эквивалентна базам данных, отказывающимся от возможностей удаления и обновления, оставляя только две манипуляции, вставку и выбор, через структуру цепочки блоков и связанных списков…»).
Тем не менее, ничто не мешает совместному использованию блокчейна и классической БД, например, следующим образом для рассматриваемого применения:

  • классическая БД используется для хранения данных;
  • записи БД связываются в цепочку с помощью блокчейна: в блокчейне хранятся хеш-коды записей, размещенных в БД.

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

4. Фиксация записей в блокчейне

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

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

5. Модификация записи с фиксацией в блокчейне

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

Кроме того, за заполнение различных полей записей отвечают различные ведомства. Вернемся к Постановлению Правительства РФ [6], в котором явным образом перечислено, какие организации отвечают за наполнение паспортных данных:

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

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

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

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

Так нужен ли здесь блокчейн?

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

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

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

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

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

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

А вы как думаете?

Литература по теме

  1. D. L. Chaum.Computer Systems Established, Maintained, and Trusted by Mutually Suspicious Groups. 1979.
  2. S. Haber, W. Scott Stornetta. How to time-stamp a digital document. Journal of Cryptology, vol. 3, pp 99-111, January 1991.
  3. S. Nakamoto.Bitcoin: A Peer-to-Peer Electronic Cash System. 2008.
  4. Правительство Бразилии тестирует блокчейн-систему удостоверений личности. 2017.
  5. Блокчейн-республика: система «электронного резидентства» в Эстонии создаёт цифровое общество без границ. 2017.
  6. Постановление Правительства Российской Федерации от 8 июля 1997 г. № 828. «Об утверждении Положения о паспорте гражданина Российской Федерации, образца бланка и описания паспорта гражданина Российской Федерации» (в ред. от 15.07.2021 г.).
  7. Постановление Правительства Российской Федерации от 1 ноября 2012 г. № 1119. «Об утверждении требований к защите персональных данных при их обработке в информационных системах персональных данных».
  8. G. Greenspan.Avoiding the pointless blockchain project. 2015.
  9. China Academy of Information and Communication Technology. Trusted Blockchain Initiatives.Blockchain White Paper. 2018.

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

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