Введение 3
Постановка задачи 5
Обзор литературы 7
Глава 1. Обзор существующих решений и подходов 8
1.1. Подходы по улучшению безопасности 8
1.2. Продукты по автоматизации 9
Глава 2. Описание проекта 11
2.1. Возможности сервиса 11
2.2. Архитектура проекта 12
Глава 3. Формирование концепции нового решения 14
3.1. Идея решения 14
3.2. Выдвижение технических требований 15
3.3. Выбор конкретной сети 16
Глава 4. Реализация смарт-контракта 17
4.1. Написание смарт-контракта 17
4.2. Оптимизация кода смарт-контракта 18
Глава 5. Реализация сервиса автоматизации 25
5.1. Пользовательский интерфейс 25
5.2. Сервер приложения 26
5.3. Сканер реестров 27
5.4. Технология хранения приватных ключей 29
5.5. Основной сценарий работы 30
Глава 6. Анализ полученных результатов 32
Выводы 34
Заключение 36
Список литературы 37
В настоящее время блокчейн (распределенный реестр, данные в котором хранятся в блоках, создающих последовательную непрерывную цепочку) [1] является очень популярной технологией, а людей, использующих его, с каждым днем становится все больше и больше. Убедиться в этом можно посмотрев на график зависимости количества активных адресов в сети Ethereum от времени [2] (Рис. 1). В такой тенденции нет ничего удиви-тельного, ведь распределенные реестры обладают огромным количеством преимуществ [3], основные из них: децентрализация, сохранность данных и прозрачность транзакций.
Основанные на технологии блокчейн цифровые активы и криптовалюты пользуются огромным спросом не только среди IT компаний, но и среди широкой массы пользователей. Транзакции, выполняемые в распределенных реестрах, а в особенности смарт-контракты (программы, хранящиеся и выполняющиеся в сети блокчейн) [4] могут предоставить людям огромные возможности, например, для развития бизнеса [5]. Транзакциями могут быть как простые переводы средств на счет, так и создание своих токенов для ICO (Initial coin offering) - форма привлечения инвестиций, которая заключается в продаже единиц токенов и является некоторой альтернативой классического IPO. Также оформление различных сделок, аналогов брачного договора или завещания, может ускорить процесс и исключить из дела посредников, что сэкономит людям время и деньги. В общем, блокчейн является крайне перспективной технологией, которая мо¬жет улучшить и упростить жизнь людей.
Однако в такой системе тоже могут существовать свои недостатки. Необходимо выявить и решить некоторые из них.
Постановка задачи
В блокчейне используется технология цифровых подписей, основанная на сложных криптографических алгоритмах [6]. Приватный ключ - все, что требуется для подписи транзакции и гарантии ее неподдельности. Это очень удобно, однако без такого ключа невозможно получить доступ к своим средствам. Другими словами, проблемой является то, что потеря приватного ключа ведет к полной потере доступа к кошельку, а следовательно и ко всем средствам на нем. Так как приватный ключ невозможно восстановить, то это становится серьезной проблемой, что отталкивает многих пользователей от технологии.
Эту проблему теоретически можно решить логикой, реализованной в смарт-контракте, однако это приводит нас ко второй проблеме. Написание смарт-контрактов - задача сложная, требующая определенных прикладных знаний и навыков. К тому же, почти все блокчейны на данный момент не поддерживают классические популярные языки программирования и требуют изучения новых инструментов для этого (например Solidity [7]). Этот факт делает невозможным написание за приемлемое время необходимых программ-контрактов для людей, абсолютно не знакомых с этой областью.
Таким образом, задачей является нахождение и реализация такого решения, которое обезопасило бы владельцев токенов (цифровых активов) от потери доступа к своим средствам, автоматизируя создание и развертывание защищающего эти активы смарт-контракта. Также необходимо предоставить клиентам такой интерфейс, благодаря которому каждый технически неподготовленный пользователь смог бы воспользоваться текущим решением.
Для достижения этой цели необходимо выполнить следующие подзадачи:
• подробно изучить технологию блокчейн;
• проанализировать существующие решения, выявить их преимущества и недостатки;
• разобраться в структуре и принципах работы существующего сервиса компании по автоматизации определенных видов смарт-контрактов, предложившей решить выявленные проблемы в качестве выпускной квалификационной работы;
• основываясь на полученных знаниях предложить идею решения, вы-двинуть технические требования, подобрать архитектуру проекта и инструменты для его реализации;
• реализовать минимально жизнеспособный продукт, удовлетворяющий поставленным требованиям;
• проанализировать полученное решение, сравнить с описанными существующими продуктами и подходами.
В ходе выполнения выпускной квалификационной работы были достигнуты следующие результаты:
• изучены концепция и структура технологии блокчейн;
• проанализированы существующие решения и выявлены их преимущества и недостатки;
• проведен анализ существующей архитектуры проекта;
• выработана идея решения поставленных проблем;
• выдвинуты технические требования к реализации идеи;
• подобраны инструменты и технологии для выполнения поставленных требований;
• написан, оптимизирован и протестирован код смарт-контракта;
• реализован сервис автоматизации составления и развертывания индивидуальных смарт-контрактов;
• проведен анализ и сравнение полученного решения с существующими продуктами и подходами;
• выявлены пути дальнейшего развития и расширения проекта.