Файл: 2 спецальная часть 2 1 Описание исходных данных 2.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 23.11.2023

Просмотров: 69

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

2.6 Выбор IT-инструментария для разработки программного обеспечения


В качестве языка программирования был выбран язык Java. Одно из главных преимуществ данного языка - его независимость от платформы, на которой выполняются программы. Таким образом, один и тот же код можно запускать под управлением разных операционных систем. Благодаря наличию в Java JIT(just in time) компилятора программы написанные на этом языке обладают хорошим быстродействием и высокой вычислительной производительностью. Вследствие чего выбор и пал на данный язык программирования. Для реализации пользовательского интерфейса была выбрана платформа JavaFx. JavaFx – это платформа на основе Java для создания приложений с насыщенным графическим интерфейсом. Может использоваться как для создания настольных приложений, запускаемых непосредственно из-под операционных систем, так и для интернет-приложений, работающих в браузерах, и для приложений на мобильных устройствах. Для всех криптографических аспектов приложения была использована 19 популярная библиотека BouncyCastle, включающая функции генерации пар ключей и цифровых подписей на их основе, а так же включающая реализацию хеш-функции Scrypt. Сериализация данных для последующей отправки через сеть осуществляется в приложении с помощью библиотеки ApacheSerializationUtils.

2.7 Техническое обеспечение


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

- цифровая корпоративная система [7];

- цифровой нотариус [8];

- торговая площадка без посредников – OpenBazaar [7];

- системы межбанковских платежей – Ripple [8];

- электронное голосование - e-voting НРД [9].

На основании вышеизложенного можно предположить, что основное внимание в дальнейшем будет сконцентрировано: - на пилотных и не только проектах с использованием блокчейна – FireChat, PopcornTime, Lighthouse, Gems, CanadaCoin [7, 10];

- исследованиях децентрализованных алгоритмов консенсуса [7];

- развитии различных прикладных платформ: Bitcoin, Ethereum, Eris, Ripple, Dogecoin, Hyperledger и др.;

- дальнейшей унификации и стандартизация блокчейна;


- развитии эффективных механизмов конвертации физических вещей в цифровой мир.

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

Плюс для вхождения в сеть нового участника ему придется синхронизировать (выкачать) огромное количество данных [11]. Как вариант, для решения данной проблемы можно предложить использовать стандартную БД, в которой хранятся реальные данные в зашифрованном виде, а в блокчейн заносится лишь их хэш и старые блоки подвергаются архивации. Хотя это в большей степени отсрочка, нежели решение проблемы. Может показаться, что для решения этих задач возможно использовать методы из таких технологий, как «Big Data» [12].

Она также ориентирована на работу с большими объемами хранения и обработки данных, уже отработаны различные архитектуры – Map Reduce, Shared Memory, Shared Nothing, Shared Disk и другие. Основным препятствием перед интеграцией инструментов Big Data в блокчейн является тип системы: блокчейн является децентрализованной, распределенной системой - это значит, что вычисления распределяются между несколькими узлами и отсутствуют узлы, управляющие работой других узлов сети. Но возможна интеграция и в другую сторону: ведь технически блокчейн является простой базой данных с ужасной масштабируемостью и отсутствием языков запросов, но децентрализованность, неизменяемость, прозрачность и возможность универсального обмена данными компенсируют с лихвой ее недостатки.

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

является обеспечение доверия к системе, т. е. система должна быть одновременно и анонимной, и прозрачной для ее участников (рис. 2).

Пользователи хотят видеть движение данных в сети и чтобы другие пользователи не знали, чем занимаются они. Для этого было решено применить алгоритмы асимметричного шифрования [9] - таким образом, у каждого пользователя имеется пара ключей: приватный и публичный (рис. 3). Приватный ключ используется для подписи блоков, отправляемых пользователем. Адрес пользователя в сети отображается при помощи публичного ключа.



Рисунок 2.10 - Карта противоречий для децентрализованного хранения данных



Рисунок 2.11 - Карта противоречий для доверия к системе



Рисунок 2.12 - Взаимосвязь пользовательских данных



Рисунок 2.13 - Классификация областей применения технологии блокчейн

Анализ и классификация областей применения Основные области применения для технологии блокчейн представлены на рис. 4. Например, случай управления учетными данными реализован в проекте Игоря Баринова – Block notary [13]. Данное приложение позволяет пользователю идентифицироваться перед регулятором посредством фото или видео. Этот файл добавляется в блокчейн, где его уже нельзя изменить или перезаписать. Можно рассмотреть реализацию торговых площадок на основе блокчейна на примере OpenBazaar. В OpenBazaar нет центрального сервера, отвечающего за все. OpenBazaar представляет собой пиринговый клиент, доступ к которому не может ограничить ни одно правительство. Для работы OpenBazaar не требуется одобрение со стороны закона, это отражает эволюцию неограниченного глобального рынка. Как выразились его создатели, «это eBay и BitTorrent в одном флаконе» [7].

OpenBazaar позволяет взаимодействовать продавцам и покупателям для покупки и продажи товаров без третьей стороны, а соответственно и комиссии. Среди систем межбанковских платежей можно отметить систему на основе протокола Ripple. В рамках пилотной программы была задействована облачная платежная платформа RC Cloud, при помощи которой можно проводить внутренние и международные денежные переводы практически моментально и по более низкой стоимости, чем у традиционных решений [8].



2.8 Разработанное основное алгоритмическое обеспечение


Прежде всего для создания блокчейн-сети необходим Python версии 3.6 и выше, с предустановленным менеджером пакетом pip (рисунок 2.14), микрофреймфорк Flask для дальнейшей интеграции блокчейн-сети с вебсайтом, а также HTTP-клиент, такой как Postman.



Рисунок 2.14 – Установка микрофреймфорка Flask В IDE создадим файл с именем blockchain.py.

Основная часть кода блокчейн-сети будет находится именном в этом файле. Создадим класс Blockchain (рисунок 2.15), конструктор которого создает начальный пустой список для хранения нашего блокчейна и другой класс для хранения транзакций. Структура нашего класса



Рисунок 2.15 – Структура класса Blockchain

Наш класс blockchain отвечает за управление цепочкой. Он будет хранить транзакции и иметь несколько вспомогательных методов для добавления новых блоков в цепочку. Давайте опишем некоторые методы. Как выглядит блок?

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



Рисунок 2.16 – Блок данных

На этом этапе идея цепочки должна быть очевидной – каждый новый блок содержит в себе хеш предыдущего блока. Это очень важно, потому что именно это дает неизменность цепочки блоков: если злоумышленник повредил более ранний блок в цепочке, то все последующие блоки будут содержать неправильные хеши. Добавление транзакций в блок: 50 Нам понадобится способ добавления транзакций в блок. Наш метод new_transaction () как раз за это отвечает, и он довольно прост (рисунок 3.9):



Рисунок 2.17 – Метод добавления транзакций в блок

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