Сегодня мы являемся свидетелями разработки и внедрения новых технологий, которые помогают нам улучшить экономическую инфраструктуру. Одной из таких технологий является технология распределенного реестра или же блокчейн.
Данная технология предоставляет возможность участникам сети совершать операции, основанные на договорных основах, при этом не
прибегая к услугам сторонних лиц. Все участники сети могут иметь свою собственную, идентичную копию реестра, при этом любые изменения в реестре отражаются во всех копиях. Безопасность и достоверность хранимых обеспечена технологией блокчейн (от англ. blockchain – цепочка блоков), заложенной в основу распределенных реестров.
С момента появления первой системы, в основе которой лежит технология блокчейн (Bitcoin) прошло более 10 лет. Прогресс не стоит на месте, и за все это время технология бурно развивалась. С развитием новых технологий появлялись и новые проблемы. Одной из основных проблем с которой сталкиваются блокчейн системы является проблема масштабируемости системы. Масштабируемость – это способность системы или процесса справляться с увеличением нагрузки, то есть способность сетей обрабатывать большое количество транзакций.
Данная проблема актуальна на сегодняшний день, и не имеет единого универсального решения. Скорость проведения транзакций большинства блокчейн сетей невелика, и они уже сейчас не способны обслуживать тот поток пользователей, который у них сейчас есть. Из-за задержек транзакций торговые организации не хотят принимать оплату в криптовалютах за свои товары и услуги, и это препятствует повсеместному распространению и нивелирует ценность цифровых активов как инструмента платежей. В этих условиях разработчики направляют все силы на повышение масштабируемости и предлагают разные способы решения данной проблемы.
На данный момент существует несколько решений, приведём некоторые из них:
¾ увеличение объема блока;
¾ перенос подписи транзакций;
¾ шардинг;
¾ концепция проведения транзакций вне сети (off-chain).
Каждое из этих решений имеет свои плюсы и минусы, но в данной работе мы остановимся на концепции проведения off-chain транзакций.
Целью данной работы является изучение механизмов работы существующих систем, позволяющих проводить off-chain транзакции, а также разработка прототипа блокчейн-системы, позволяющая проводить транзакции вне сети на основе блокчейн платформы Neo.
В соответствии c поставленной целью в работе выявлены следующие задачи:
¾ изучение механизмов работы существующих систем, позволяющих проводить off-chain транзакции (Lightning Network и т.д.);
¾ изучение структуры блокчейн-системы Neo;
¾ изучение существующих инструментов для разработки системы для проведения off-chain транзакций;
¾ разработка блокчейн-системы, позволяющая проводить off-chain транзакции;
¾ разработка клиентского приложения для взаимодействия с пользователем и разработанной системой.
Введение........................................................................................................... 4
Глоссарий........................................................................................................ 7
1. Принципы работы существующих систем, позволяющие проводить off-chain транзакции....................................................................................................... 8
1.1. Открытие и закрытие канала.................................................................... 9
1.2. Использование канала............................................................................ 11
1.3. Аннулирование состояния...................................................................... 13
1.4. Кооперативное закрытие........................................................................ 14
1.5. Raiden Network....................................................................................... 14
2. Структура блокчейн-системы NEO.......................................................... 16
3. Смарт-контракты с мультиподписью и временной блокировкой в Neo. 21
4. Программная реализация системы для проведения off-chain транзакций 24
4.1. Архитектура............................................................................................ 24
4.2. Основные инструменты для разработки системы для проведения off-chain транзакций..................................................................................................... 25
4.3. Описание разработанной системы и API для проведения off-chain транзакций 29
5. Клиентское приложения для взаимодействия с разработанной системой 34
Заключение.................................................................................................... 39
Список литературы и используемых источников........................................ 40
Приложение................................................................................................... 42
Приложение 1. Сравнение узлов GUI и CLI................................................ 42
Приложение 2. Файлы конфигурации для узла в частной сети.................. 44
Приложение 3. Описание основных вызываемых методов системы.......... 46
1. The Bitcoin Lightning Network: Scalable Off-Chain Instant Payments [Электронный ресурс]. — 2016. — URL: https://lightning.network/lightning- network-paper.pdf (дата обращения 04.05.2019).
2. Lightning Network [Электронный ресурс]. — 2019. — URL: https://ru.wikipedia.org/wiki/Lightning_Network (дата обращения 04.05.2019).
3. Lightning Network Часть №3: Смарт-контракты [Электронный ресурс].
— 2017. — URL: https://medium.com/bitlum/part-3-smart-contracts-ece8a6ef6328 (дата обращения 06.05.2019).
4. Raiden Network [Электронный ресурс]. — 2018. — URL: https://raiden.network/101.html (дата обращения 08.05.2019).
5. Гибадуллин И.Н. Исследование и анализ блокчейн систем в сфере финансов: курсовая работа [Текст] / Ин-т вычислительной математики и информационных технологий. — K., КФУ, — 2019. — 10 с.
6. Header Class [Электронный ресурс]. — 2019. — URL: https://docs.neo.org/en-us/sc/reference/fw/dotnet/neo/Header.html (дата обращения 05.05.2019).
7. JSON-RPC [Электронный ресурс]. — 2019. — URL: https://ru.wikipedia.org/wiki/JSON-RPC (дата обращения 05.06.2019).
8. Scrypt [Электронный ресурс]. — 2019. — URL: https://pypi.org/project/scrypt (дата обращения 07.06.2019).
9. Pycrypto [Электронный ресурс]. — 2013. — URL: https://pypi.org/project/scrypt (дата обращения 07.06.2019).
10. Ecdsa [Электронный ресурс]. — 2019. — URL: https://github.com/warner/python-ecdsa (дата обращения 07.06.2019).
11. PyMySQL [Электронный ресурс]. — 2017. — URL: https://o7planning.org/ru/11463/connecting-mysql-database-in-python-using- pymysql (дата обращения 07.06.2019).
12. Neocore [Электронный ресурс]. — 2019. — URL: https://pypi.org/project/neocore (дата обращения 07.06.2019).
13. Gevent [Электронный ресурс]. — 2019. — URL: https://pypi.org/project/gevent (дата обращения 07.06.2019).
14. SQLAlchemy [Электронный ресурс]. — 2019. — URL: https://pypi.org/project/SQLAlchemy (дата обращения 07.06.2019).
15. Requests [Электронный ресурс]. — 2015. — URL: https://pypi.org/project/requests/2.7.0 (дата обращения 07.06.2019).
16. Flask [Электронный ресурс]. — 2019. — URL: https://ru.wikibooks.org/wiki/Flask (дата обращения 07.06.2019).
17. Flask-JSONRPC [Электронный ресурс]. — 2019. — URL: https://pypi.org/project/Flask-JSONRPC (дата обращения 07.06.2019).
18. Neo Private network [Электронный ресурс]. — 2019. — URL: https://hub.docker.com/r/cityofzion/neo-privatenet (дата обращения 04.04.2019).
19. Node.js [Электронный ресурс]. — 2019. — URL: https://ru.wikipedia.org/wiki/Node.js (дата обращения 01.05.2019).