Время прочтения: 4 мин.

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

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

Рис. 1. Общая структура блокчейна, каждый блок — это 4 транзакции

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

1. Выбор блокчейн-платформы

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

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

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

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

Разработчики Ethereum предполагают использовать монету “Эфир” не только для обмена ресурсами в сети, но и как инструмент регистрации сделок в смарт-контрактах.

2. Практики. Приложение и смарт-контракт для Ethereum

Во время своей разработки структуры системы документооборота на базе блокчейна, мною были сформулированы следующие задачи, которые необходимо решить:

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

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

3. Разработка смарт-контракта

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

В начале была создана структура, содержащая 3 записи: name (имя файла), hash (хеш файла), address (логин владельца файла).

Реализация добавления новых записей представлена в листинге:

Функция Push позволяет добавить запись только в том случае, если в системе нет файла с таким же именем, а также даёт возможность владельцу файла изменять запись и сам файл.

Также для работы системы были созданы следующие функции:

  • получения значения хеша и владельца файла по имени этого файла;
  • поиска имени файла по его порядковому номеру
  • получения количества транзакций (файлов).

Две последние функции необходимы для получения списка файлов в приложении.

4.Разработка приложения

Для проектирования приложения мною была выбрана интегрированная среда разработки MS Visual Studio, которая подключалась к Web3.js библиотеке и работала с html кодом. Работа в системе начинается с авторизации в блокчейне для доступа к базе транзакций. Если авторизация прошла успешно, то пользователь получает полный доступ к работе с программой, как показано на рисунке:

Рис. 2. Основное окно программы

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

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