ВВЕДЕНИЕ 4
1. ПРОТОКОЛ БЛОКЧЕЙН И ПРИНЦИПЫ ЕГО РАБОТЫ 6
1.1. Общие сведения 6
1.2. Блоки транзакций 6
1.3. Хеш-функции 8
1.4. Цепочки блоков 9
2. ОБЗОР СУЩЕСТВУЮЩИХ РЕШЕНИЙ 11
2.1. Bitcoin 11
2.2. Ethereum 11
2.3. Storj.io 12
2.4. Выводы 13
3. ОПИСАНИЕ ПРОГРАММНОЙ РЕАЛИЗАЦИИ 15
3.1. Общая информация о реализации 15
3.2. Модуль коммуникации между узлами 16
3.2.1. Основные методы модуля коммуникации между узлами 17
3.2.2. Основные эндпоинты серверной части 17
3.3. Модуль взаимодействия с блокчейном 18
4. ПРИНЦИП РАБОТЫ РАЗРАБОТАННОЙ P2P-СЕТИ 19
5. РЕАЛИЗАЦИЯ БЛОКЧЕЙН-СЕТИ 22
5.1. Проектирование структуры блока и транзакции 22
5.2. Хэширование блоков 23
5.3. Реализация алгоритма генерации новых блоков 24
5.4. Реализация алгоритма верификации блоков 25
5.5. Построение структуры для хранения цепочки блоков транзакции 26
5.6. Построение блокчейн-сети для каждой сессии обмена данными 27
6. АЛГОРИТМ PROOF OF WORK 29
6.1. Стандартная реализация алгоритма PoW 29
6.2. Модификация алгоритма PoW 30
7. СИНХРОНИЗАЦИЯ УЗЛОВ СЕТИ 33
7.1. Стандартный механизм разрешения конфликтов 33
7.2. Собственный механизм разрешения конфликтов 35
8. ПРОГРАММНАЯ БИБЛИОТЕКА 37
ЗАКЛЮЧЕНИЕ 40
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 42
ПРИЛОЖЕНИЕ
В настоящее время во многих прикладных областях, например - в обмене конфиденциальными данными, может найти применение система, обеспечивающая защиту персональных данных посредством децентрализованного хранения и шифрования. В результате того, что на сегодняшний день личные данные, которыми обмениваются пользователи через различные сервисы (например - сообщения в мессенджерах) зачастую хранятся централизованно у владельцев данных сервисов, возникает возможность масштабной утечки к злоумышленникам всех конфиденциальных данных пользователей. Именно проблему масштабных утечек конфиденциальной информации призвана решить вышеуказанная система. Такого рода утечки становятся невозможными благодаря отсутствию центрального управления и центрального хранилища данных в предлагаемом решении.
Согласно статистике, 67% из всего населения земного шара ежедневно используют мобильные устройства, из них 80% - пользователи смартфонов. Кроме того, средняя тактовая частота процессора смартфона на сегодняшний день 2 ГГц [1]. Приведенные статистические данные показывают, что на сегодняшний день, ввиду наличия мобильных устройств у большинства людей, значительный объем данных передается именно с использованием таких устройств. Принимая во внимание этот факт, а также достаточную для применения алгоритмов шифрования мощность современных мобильных устройств, можно сделать вывод о возможности и необходимости реализации на базе мобильных устройств системы защищенного обмена информацией. В виду децентрализованности, а также применения принципов шифрования, для реализации подобной системы подходит такой инструмент, как блокчейн - распределенная база данных, построенная с использованием шифрования данных по определенным правилам.
В ходе исследования существующих реализаций протокола блокчейн, таких как Bitcoin, Ethereum, Storj .io, а также инструментов, связанных с ними, было обнаружено, что ни одна из данных реализаций не пригодна для мобильных платформ по причине слишком сложных вычислений, либо из-за отсутствия инструментов для интеграции мобильных устройств.
В виду вышесказанного, для того, чтобы использовать блокчейн на мобильных устройствах, необходимо разработать собственную реализацию данной технологии, ориентированную на специфику таких устройств, а именно - ограниченные вычислительные мощности по сравнению с компьютерами. Перед отправкой информацию необходимо обработать, поместив данные в транзакции, а транзакции - в блоки, которые затем будут встроены в блокчейн. Таким образом, возникает задача интеграции обмена информацией с разрабатываемой распределенной системой.
Целью данной работы является разработка реализации протокола блокчейн, пригодной для использования на мобильных устройствах.
Для достижения цели работы были поставлены следующие задачи:
• Разработка требований к системе на основании результатов обзора текущих реализаций технологии блокчейн;
• Проектирование программного решения;
• Реализация модуля коммуникации между узлами;
• Построение собственной сети блокчейн для каждой сессии обмена информацией;
• Модификации алгоритма Proof of Work;
• Реализация взаимодействия и синхронизации;
• Разрешение конфликтов между узлами сети;
• Разработка программной библиотеки для ОС iOS.
В результате выполнения данной работы была разработана адаптированная для мобильных устройств реализация протокола блокчейн. На ее основе реализована программная библиотека, позволяющая построить сеть для обмена данными между мобильными устройствами на базе ОС iOS, использующая для хранения данных протокол блокчейн.
В процессе выполнения работы выполнены следующие задачи:
• Реализация модуля коммуникации между узлами;
• Построение собственной сети блокчейн для каждой сессии обмена информацией;
• Модификации алгоритма Proof-of-Work;
• Реализация взаимодействия и синхронизации;
• Разрешение конфликтов между узлами сети;
• Разработка программной библиотеки для ОС iOS.
Разработанная библиотека была опубликована на Bitbucket [11] и может быть подключена к проекту с использованием системы управления зависимостями CocoaPods и использована в любом приложении для устройств под управлением операционной системы iOS версии 10 и выше.
Помимо этого для демонстрации работы библиотеки разработано демонстрационное приложение-мессенджер, которое использует реализованную библиотеку для построения P2P-сетей, в которых происходит обмен сообщениями между пользователями.
В отличие от большинства существующих аналогов, разработанная программная библиотека имеет возможность интеграции с мобильными устройствами. Кроме того, в разработанном программном продукте решена проблема медленной работы майнера на мобильных устройствах из-за слишком сложных вычислений. В качестве критерия оценки быстродействия было выбрано время генерации одного блока. Сравнение проводилось с блокчейном Ethereum, так как из рассмотренных только он имеет средства для интеграции с мобильными платформами. Время на генерацию одного блока в сети Ethereum при помощи мобильного устройства составляет от 1 до 6 часов, в разработанной реализации один блок генерируется в среднем 0,5 секунды.