Разработка информационной системы управления платежами ЖКХ на основе технологии блокчейн
Понятие жилищно-коммунального хозяйства в рамках цифровой экономики России. Использование технологии блокчейн для контроля платежей в сфере ЖКХ. Особенности моделирование бизнес-процессов управления платежами ЖКХ с использованием программного обеспечения.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 10.12.2019 |
Размер файла | 2,5 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Рисунок 2.7. Схема базы данных
????? 3. Разработка прототипа информационной системы
Разработка опции управления платежами с использованием блокчейн проводилась на языке программирования Python. Это высокоуровневый неспециализированный язык, простой в использовании за счет того, что он применяется совместно с соответствующим интерпретатором. Python гибкий, а в его основе заложены стандартные библиотеки с набором многих полезных опций, поэтому язык широко востребован в программировании. Выбор такого варианта для подготовки прототипа объясняется его гибкостью, а также большим числом библиотек, обеспечивающих взаимодействие с другими технологиями.
Модуль подготавливался с использованием технологии Multichain [19] - платформы для создания блокчейн с открытым стартовым кодом. Кроме того, в работе применялась библиотека для шифрования hashlib и “оболочки” для вызова JSON-RPC -команд из кода программы Savoir.
База данных создана посредством использования библиотеки SQLite [20] - движка с открытым стартовым кодом. Эта внедренная в процесс библиотека, формирующая автономный, безсерверный и не требующий сложной предварительной настройки, транзакционный SQL-движок.
Для проверки клиент-серверного взаимодействия был подготовлен тестовый клиентский и серверный блок системы, а также тестовый вариант базы данных.
Основной этап работы предусматривал создание представления блокчейна в виде класса Blockchain. Такой вариант предназначен для хранения операций и некоторых второстепенных методов добавления блоков в цепочку.
Каждый блок представляет собой объект, включающий в себя индекс, временную метку (Unix timestamp), перечень транзакций, доказательность и хэш предшествующего блока, что считается ключевым фактором, поскольку он содержит основную идею блокчейна о его неизменяемости. Пример внешнего вида отдельного блока представлен ниже:
block = {
'index': 1,
'timestamp': 1506057125.900785,
'transactions': [
{
'sender': "8527147fe1f5426f9dd545de4b27ee00",
'recipient': "a77f5cdfa2934df3954a5c7c7da5df1f",
'amount': 5,
}
],
'proof': 324984774000,
'previous_hash': "2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824"
}
Код работы всего алгоритма представлен в Приложении В.
????? 4. Экономическое обоснование
Под оценкой экономической эффективности ИС можно понимать измерение того, на сколько выгодно внедрение технологии. Экономическая полезность понимается как разница, денежный эквивалент доход и расходов, до и после внедрения. Бизнес по управлению многоквартирными домами строится на управлении денежными потоками. Годовой оборот в сфере ЖКХ превышает 4,2 трлн рублей, что составляет порядка 7% ВВП России. Каждый год через российские УК проходит порядка 2,5 трлн рублей. 500 млрд из них -- выручка управляющих организаций за оказываемые ими услуги, а 2 трлн приходится на транзитные платежи поставщикам ресурсов. Еще 1,5 трлн рублей -- платежи через расчетные центры. По данным министерства строительства и ЖКХ РФ, по состоянию на конец 2017 года совокупный объем задолженности в сфере ЖКХ в стране составил 1,34 трлн рублей. В Пермском крае 28 тыс. многоквартирных домов. В реестре товариществ собственников жилья в Пермском крае всего 1460 ТСЖ. 360 управляющих компаний обслуживают 70% многоквартирного жилого фонда. В Пермском крае на начало 2019 года общая сумма долга управляющих компаний за поставленные коммунальные услуги составляет 5,295 млрд рублей. Долг ТСЖ и ЖСК -- 1,126 млрд рублей [21]. Внедрение в систему управления платежами ЖКХ технологии смарт-контракта позволит понизить уровень недоверия между участниками расчетов, а также повысить прозрачность процессов поступления и распределения денежных средств, что позволит снизить объемы задолженностей до 80%. Таким образом, доходы УК и ТСЖ вырастут до 1 трлн. руб. Для Пермского края этот показатель составит до 5,1 млрд руб. в год, а для Перми - до 2,6 млрд руб., поскольку чуть больше половины от всего многоквартирного жилого фонда края находится именно в Перми.
????? 5. Требования и рекомендации по внедрению информационной системы в сферу ЖКХ
В сегодняшних условиях воплощению в жизнь данного проекта мешает ряд правовых препятствий. Несмотря на популярность криптовалют и технологий их создания, в РФ эти методики и инструменты находятся за пределами правового поля. Нормативная база для использования подобных механизмов на территории РФ находится на стадии формирования. Хотя разработка проектов о применении технологии блокчейн в экономике и в правительственном секторе уже осуществляется и довольно активно. Прежде всего, блокчейн рассматривается в качестве метода уменьшения уровня бюрократизации в нашей стране.
Также, внедрение технологии в различные экономические и государственные процессы, требует внесения изменений в действующее законодательство. В частности, в Жилищный кодекс и постановления Правительства РФ, в части регламентирования порядка осуществления платежей населением.
В марте 2018 года была утверждена поправка в Жилищный кодекс РФ о возможности заключения прямых соглашений между владельцами жилья и поставщиками коммунальных ресурсов, которая начала действовать с 1 января 2019 года. Изменение подразумевает, что взаимодействие граждан с ресурсоснабжающими структурами теперь осуществляется напрямую без участия управляющих компаний, как посредников.
Для воплощения в жизнь проекта необходимо привлечение как государственных, так и сторонних инвестиций.
Заключение
В процессе выполнения выпускной квалификационной работы была детально проанализирована такая предметная сфера, как управление транзакциями в сфере ЖКХ на основе блокчейн технологии. В рамках исследования изучались ключевые понятия, относящиеся к данной предметной области, выявлялись существующие проблемы в действующих бизнес-процессах. Проведено сравнение внедренных решений по управлению платежами, в результате чего сформированы технические особенности информационной системы, гарантирующие ее конкурентоспособность. Также, в процессе исследования определена применимость технологии блокчейн к созданию новой информационной системы для управления финансовыми операциями в ЖКХ.
Кроме того, произведен этап проектирования сервиса, определена спецификация функциональных возможностей программы, спроектирована модель классов, схема взаимодействия компонент системы и схема базы данных.
В ходе подготовительного этапа разработки прототипа системы был сформирован механизм блокчейна, который планируется внедрить в сервис по управлению транзакциями в сфере ЖКХ.
Также, были разработаны условия для возможности промышленного использования программы в области ЖКХ.
В результате реализованы такие задачи:
1. Проведен анализ предметной области.
2. Сделан обзор и выполнено исследование действующих решений.
3. Создана архитектура нового информационного сервиса.
4. Подготовлен прототип программы для управления операциями в сфере ЖКХ.
5. Определены условия и рекомендации по использованию информационной системы на практике.
Последующее развитие сервиса включает:
· Формирование функциональной составляющей модулей системы;
· Подготовку клиентской части сервиса и абонентского интерфейса;
· Замену внедренных зарубежных хэширующих библиотек на российские.
Последующая работа также подразумевает углубленное изучение действующей нормативно-правовой базы, регулирующую сферу ЖКХ, для возможности внедрения программных решений на территории Пермского края. Спланированы условия перевода остальных бизнес-процессов в ЖКХ на программы, в основе работы которых заложена технология блокчейн, с целью формирования общей системы контроля и управления в сфере ЖКХ. Чтобы перечисленные процедуры по внедрению новых технологий прошли максимально быстро, нужно закрепить на законодательном уровне возможность развития новых информационных систем, а также использование блокчейн как ключевой технологии для обработки и хранения информации.
Основным этапом последующего развития сервиса является включение в нее “Интернета вещей”. Элемент предназначен для автоматизации процедуры сбора показаний счетчиков.
Кроме того, возможна разработка отдельной криптовалюты на основе созданной системы и проведение ICO. Электронные деньги можно использовать как бонус или основу в программах лояльности для абонентов.
Библиографический список
1. Кириллова Д. И. Проблемы в сфере жилищно-коммунального хозяйства и пути их решения // Молодой ученый. 2014. №.14. С. 162-163.
2. Абдуллина А. Р., Владимиров И. А. Жилищно-коммунальное хозяйство в России // Проблемы современной экономики. 2011. С. 183-185.
3. Сатаров Г. А. Диагностика российской коррупции: социологический анализ // М.: Фонд Индем. 2012. С. 35
4. Чистова М. В., Концевич Г. Е., Демина Н. В. Возможности внедрения информационных технологий для реформирования жилищно-коммунального хозяйства РФ // Гуманизация образования. 2014. №.6.
5. Грачёва И. И. Проблемы и перспективы функционирования рынка жилищно-коммунальных услуг в современных экономических условиях // Концепт. 2013. №.12 (28).
6. Пряников М. М., Чугунов А. В. Блокчейн как коммуникационная основа формирования цифровой экономики: преимущества и проблемы // International Journal of Open Information Technologies. 2017. Т.5. №.6.
7. Дорожная карта - экономика и финансы. Комплекс мер “Внедрение информационных технологии? в финансово- экономическом комплексе взаимоотношении? [Электронный ресурс] URL: http://filearchive.cnews.ru/img/cnews/2015/12/22/ekonomika_dk.pdf (дата обращения: 23.05.2019).
8. Аксенов П, Сарычева М. Криптотехнологии переводят на рубли. Банк России собирает консорциум // Коммерсантъ No117 [Электронный ресурс] URL: http://www.kommersant.ru/doc/3029539 (дата обращения: 23.05.2019).
9. Институт Развития Интернета создаст рабочую группу для изучения перспектив развития блокчеи?на в России // Институт Развития Интернета. [Электронный ресурс] URL: http://ири.рф/news/13832 (дата обращения: 23.05.2019).
10. Совещание с вице-премьерами // Правительство России [Электронный ресурс] URL: http://government.ru/news/26650 (дата обращения: 23.05.2019).
11. Центрально-азиатская презентация “Доклада о мировом развитии 2016: Цифровые дивиденды” [Электронный ресурс] URL: http://www.worldbank.org/ru/events/2016/02/01/central-asia-launch-wdr-2016 (дата обращения: 23.05.2019).
12. The website of choice of technologies and suppliers TAdviser. [Электронный ресурс]. URL: http://www.tadviser.ru/index.php/%3ADigital-Russia-report (дата обращения: 23.05.2019).
13. Распоряжение Правительства РФ от 28.07.2017 № 1632 - Об утверждении программы “Цифровая экономика Российской Федерации” (с изменениями и дополнениями) [Электронный ресурс] URL: http://government.ru/docs/28653 (дата обращения: 23.05.2019).
14. Цифровая Россия. Новая реальность. A report from McKinsey & company. [Электронный ресурс] URL: https://www.mckinsey.com/russia/our-insights/ru-ru (дата обращения: 23.05.2019).
15. Соловьева О. От кибератак отмахиваются шапками. Независимая газета. [Электронный ресурс] URL: http://www.ng.ru/economics/2017-11-10/4_7112_cyberatack.html (дата обращения: 23.05.2019).
16. Национальный рейтинг проблем ЖКХ по России за 2017 год. Национальный центр общественного контроля в сфере ЖКХ “НП ЖКХ Контроль”. [Электронный ресурс] URL: http://gkhkontrol.ru/2018/03/43860 (дата обращения: 23.05.2019)
17. Tapscott D, Tapscott A. Blockchain Revolution: How the Technology Behind Bitcoin is Changing Money, Business, and the World [M]. New York, Penguin. 2016. 368 p.
18. Симонс В. Блокчейн для бизнеса простыми словами в примерах [Электронный ресурс]. URL: http://walter-simons.livejournal.com/434231.html (дата обращения: 23.05.2019).
19. Multichain. Open source blockchain platform [Электронный ресурс] URL: https://www.multichain.com (дата обращения: 23.05.2019).
20. SQLite. SQL database engine [Электронный ресурс] URL: https://www.sqlite.org/index.html (дата обращения: 23.05.2019).
21. Зырянова Т. Чем опасны банкротства управляющих компаний? [Электронный ресурс] URL: https://properm.ru/news/society/166804/ (дата обращения: 23.05.2019).
Приложение А. Документирование прецедентов
Таблица А.1. Прецедент “Работа с данными о потребителях”
Краткое описание |
Прецедент дает возможность добавлять, удалять и изменять данные о потребителях в базе данных |
|
Актеры |
Пользователь, Информационная система |
|
Предусловия |
Выполнено подключение к базе данных, пользователь авторизован в системе |
|
Основной поток |
· Ввод информации о потребителе, сохранение; · Выбор записи потребителя, удаление, сохранение; · Выбор записи потребителя, изменение, сохранение. |
|
Альтернативные потоки |
· При отсутствии подключения к базе данных пользователю выдается сообщение о том, что подключение не выполнено, операция невозможна |
|
Постусловия |
Добавление, удаление, изменение записи о потребителе в базе данных |
Таблица А.2. Прецедент “Работа с данными о поставщиках”
Краткое описание |
Прецедент дает возможность добавлять, удалять и изменять данные о поставщиках в базе данных |
|
Актеры |
Пользователь, Информационная система |
|
Предусловия |
Выполнено подключение к базе данных, пользователь авторизован в системе |
|
Основной поток |
· Ввод информации о поставщике, сохранение; · Выбор записи поставщика, удаление, сохранение; · Выбор записи поставщика, изменение, сохранение. |
|
Альтернативные потоки |
· При отсутствии подключения к базе данных пользователю выдается сообщение о том, что подключение не выполнено, операция невозможна |
|
Постусловия |
Добавление, удаление, изменение записи о поставщике в базе данных |
Таблица А.3. Прецедент “Работа с данными о тарифах”
Краткое описание |
Прецедент дает возможность добавлять, удалять и изменять данные о тарифах в базе данных |
|
Актеры |
Пользователь, Информационная система |
|
Предусловия |
Выполнено подключение к базе данных, пользователь авторизован в системе |
|
Основной поток |
· Ввод информации о тарифе, сохранение; · Выбор записи тарифа, удаление, сохранение; · Выбор записи тарифа, изменение, сохранение. |
|
Альтернативные потоки |
· При отсутствии подключения к базе данных пользователю выдается сообщение о том, что подключение не выполнено, операция невозможна |
|
Постусловия |
Добавление, удаление, изменение записи о тарифе в базе данных |
Таблица А.4. Прецедент “Работа с данными об услугах”
Краткое описание |
Прецедент дает возможность добавлять, удалять и изменять данные об услугах в базе данных |
|
Актеры |
Пользователь, Информационная система |
|
Предусловия |
Выполнено подключение к базе данных, пользователь авторизован в системе |
|
Основной поток |
· Ввод информации об услуге, сохранение; · Выбор записи услуги, удаление; · Выбор записи услуги, изменение, сохранение изменения. |
|
Альтернативные потоки |
· При отсутствии подключения к базе данных пользователю выдается сообщение о том, что подключение не выполнено, операция невозможна |
|
Постусловия |
Добавление, удаление, изменение записи об услуге в базе данных |
Таблица А.5. Прецедент “Работа с данными о потреблении”
Краткое описание |
Прецедент дает возможность добавлять, удалять и изменять данные о потреблении в базе данных |
|
Актеры |
Пользователь, Информационная система |
|
Предусловия |
Выполнено подключение к базе данных, пользователь авторизован в системе |
|
Основной поток |
· Ввод информации о потреблении, сохранение; · Выбор записи потребления, удаление; · Выбор записи потребления, изменение, сохранение изменения. |
|
Альтернативные потоки |
· При отсутствии подключения к базе данных пользователю выдается сообщение о том, что подключение не выполнено, операция невозможна |
|
Постусловия |
Добавление, удаление, изменение записи о потреблении в базе данных |
Таблица А.6. Прецедент “Работа с данными о льготах и субсидиях”
Краткое описание |
Прецедент дает возможность добавлять, удалять и изменять данные о льготах и субсидиях в базе данных |
|
Актеры |
Пользователь, Информационная система |
|
Предусловия |
Выполнено подключение к базе данных, пользователь авторизован в системе |
|
Основной поток |
· Ввод информации о льготе, сохранение; · Выбор записи льготы, удаление; · Выбор записи льготы, изменение, сохранение изменения. |
|
Альтернативные потоки |
· При отсутствии подключения к базе данных пользователю выдается сообщение о том, что подключение не выполнено, операция невозможна |
|
Постусловия |
Добавление, удаление, изменение записи о льготе в базе данных |
Таблица А.7. Прецедент “Совершение оплаты”
Краткое описание |
Прецедент дает возможность пользователю совершать оплату |
|
Актеры |
Пользователь, Информационная система |
|
Предусловия |
Выполнено подключение к базе данных, пользователь получил счет на оплату, пользователь вошел в систему |
|
Основной поток |
· Выполнение запроса на совершение платежа; · Сохранение записи в блокчейн |
|
Альтернативные потоки |
· При отсутствии подключения к базе данных пользователю выдается сообщение о том, что подключение не выполнено, операция невозможна; |
|
Постусловия |
На экране отображается информация о совершении платежа |
Таблица А.8. Прецедент “Начисление”
Краткое описание |
Прецедент дает возможность рассчитывать начисления потребителю в соответствии с потребляемыми услугами |
|
Актеры |
Пользователь, Информационная система |
|
Предусловия |
Выполнено подключение к базе данных, У пользователя есть потребления |
|
Основной поток |
· Выполнение запроса на получение информации о потреблениях, услуге и тарифе данных; · Выполнение запроса на получение информации о льготах и субсидиях; · Расчет начисления; · Вывод суммы начисления. |
|
Альтернативные потоки |
· При отсутствии подключения к базе данных пользователю выдается сообщение о том, что подключение не выполнено, операция невозможна; · При отсутствии потреблений расчет не производится |
|
Постусловия |
Добавление записи в базу данных, На экране отображается сумма начисления по выбранному потребителю |
Таблица А.9. Прецедент “Авторизация”
Краткое описание |
Авторизация пользователя в Информационной системе для доступа к ее функционалу и данным |
|
Актеры |
Пользователь, Информационная система |
|
Предусловия |
Выполнено подключение к базе данных, ввод пользователем логина и пароля |
|
Основной поток |
· Выполнение запроса в базу данных; · Вход пользователя систему; · Получение данных пользователя. |
|
Альтернативные потоки |
· При отсутствии подключения к базе данных пользователю выдается сообщение о том, что подключение не выполнено, операция невозможна · При неверном вводе пользователя логина и пароля пользователю выдается сообщение о том, что введены неверные данные |
|
Постусловия |
Работа Пользователя в Информационной системе |
Таблица А.10. Прецедент “Перерасчет”
Краткое описание |
Прецедент дает возможность изменить начисление потребителя при возникновении новой информации |
|
Актеры |
Пользователь, Информационная система |
|
Предусловия |
Выполнено подключение к базе данных, пользователь авторизован в системе, у потребителя есть начисление, были обнаружены дополнительные данные |
|
Основной поток |
· Выполнение запроса на получение информации о потреблениях, услуге и тарифе данных; · Выполнение запроса на получение информации о льготах и субсидиях; · Повторный расчет начисления; · Вывод суммы начисления. |
|
Альтернативные потоки |
· При отсутствии подключения к базе данных пользователю выдается сообщение о том, что подключение не выполнено, операция невозможна; · При отсутствии потреблений расчет не производится |
|
Постусловия |
Добавление записи в базу данных, на экране отображается актуальная сумма начисления |
Таблица А.11. Прецедент “Выставление счета”
Краткое описание |
Прецедент дает возможность рассчитать оптимальное распределение инвестиций |
|
Актеры |
Информационная система |
|
Предусловия |
Выполнено подключение к базе данных, пользователь авторизован в системе, в базе данных есть информация об инвестиционных проектах и компании |
|
Основной поток |
· Выбор пользователем инвестиционных проектов для оптимизации; · Работа генетического алгоритма для поиска оптимального распределения инвестиций; · Формирование результата. |
|
Альтернативные потоки |
· При отсутствии подключения к базе данных пользователю выдается сообщение о том, что подключение не выполнено, операция невозможна; · При отсутствии необходимых данных пользователю выводится сообщение о недостатке имеющейся информации |
|
Постусловия |
Сформированы результаты вычислений, результаты занесены в базу данных |
Таблица А.12. Прецедент “Получение платежа”
Краткое описание |
Прецедент дает возможность получить платеж УК или РСО от потребителя |
|
Актеры |
Пользователь, Информационная система |
|
Предусловия |
Потребителем выполнен платеж |
|
Основной поток |
· Просмотр информации о платеже; · Перевод денег получателю платежа |
|
Альтернативные потоки |
· При отсутствии подключения к базе данных пользователю выдается сообщение о том, что подключение не выполнено, операция невозможна. |
|
Постусловия |
Вывод информации о платеже на экран, перевод денег получателю |
Таблица А.13. Прецедент “Формирование отчетов”
Краткое описание |
Прецедент дает возможность сгенерировать отчет по результатам расчетов оптимального распределения инвестиций по заданным пользователем параметрам |
|
Актеры |
Пользователь, Информационная система |
|
Предусловия |
Выполнен расчет оптимального распределения инвестиций, результаты занесены в базу данных |
|
Основной поток |
· Выбор пользователем параметров отчета; · Чтение данных из базы данных; · Генерация отчета; · Вывод отчета на экран. |
|
Альтернативные потоки |
· При отсутствии подключения к базе данных пользователю выдается сообщение о том, что подключение не выполнено, операция невозможна |
|
Постусловия |
Вывод отчета на экран |
Таблица А.14. Прецедент “Распределение платежей”
Краткое описание |
Прецедент дает возможность перенаправлять платежи другим РСО или УК |
|
Актеры |
Пользователь, Информационная система |
|
Предусловия |
Выполнено подключение к базе данных, пользователь авторизован, платеж адресован неверно или через посредника |
|
Основной поток |
· Выбор платежа; · Переназначение получателя платежа; |
|
Альтернативные потоки |
· При отсутствии подключения к базе данных пользователю выдается сообщение о том, что подключение не выполнено, операция невозможна |
|
Постусловия |
Изменение информации о платеже, просмотр актуальной информации о платеже |
Приложение Б. Построение диаграмм активности
Рисунок Б.1. Диаграмма активности для прецедентов “Работа с данными о потребителях”, “Работа с данными о поставщиках”, “Работа с данными о тарифах”, “Работа с данными об услугах”, “Работа с данными о льготах и субсидиях”
Рисунок Б.2. Диаграмма активности для прецедента “Совершение оплаты”
Рисунок Б.3. Диаграмма активности для прецедента “Расчет начисления”
Рисунок Б.4. Диаграмма активности для прецедента “Перерасчет начисления”
Рисунок Б.5. Диаграмма активности для прецедента “Выставление счета”
Рисунок Б.6. Диаграмма активности для прецедента “Получение платежа”
Рисунок Б.7. Диаграмма активности для прецедента “Распределение платежей”
Рисунок Б.8. Диаграмма активности для прецедента “Формирование отчета”
Рисунок Б.9. Диаграмма активности для прецедента “Авторизация”
Приложение В. Программный код реализации блокчейна
Представление блокчейна
class Blockchain(object):
def __init__(self):
self.chain = []
self.current_transactions = []
def new_block(self):
# Создает новый Блок и добавляет его к цепочке
pass
def new_transaction(self):
# Добавляет новую транзакцию к списку транзакций
pass
@staticmethod
def hash(block):
# Хэшируем блоки
pass
@property
def last_block(self):
# Возвращает последний блок в цепочке
pass
Добавление транзакции в блок
class Blockchain(object):
...
def new_transaction(self, sender, recipient, amount):
"""
Создает новую транзакцию для того чтобы перейти к следующему искомому Блоку
:параметр sender: <str> Адрес отправителя
:параметр recipient: <str> Адрес получателя
:параметр amount: <int> Количество
:return: <int> Индекс Блока, в котором будет хранится данная транзакция
"""
self.current_transactions.append({
'sender': sender,
'recipient': recipient,
'amount': amount,
})
return self.last_block['index'] + 1
Создание новых блоков, чтобы реализовать свой блокчейн
import hashlib
import json
from time import time
class Blockchain(object):
def __init__(self):
"""
Инициализируем свой блокчейн
"""
self.current_transactions = []
self.chain = []
# Create the genesis block
self.new_block(previous_hash=1, proof=100)
def new_block(self, proof, previous_hash=None):
"""
Создаем новый блок в нашем Блокчейне
:параметр proof: <int> proof полученный после использования алгоритма “Доказательство выполнения работы”
:параметр previous_hash: (Опциональный) <str> Хэш предыдущего Блока
:return: <dict> New Block
"""
block = {
'index': len(self.chain) + 1,
'timestamp': time(),
'transactions': self.current_transactions,
'proof': proof,
'previous_hash': previous_hash or self.hash(self.chain[-1]),
}
# Сбрасываем текущий список транзакций
self.current_transactions = []
self.chain.append(block)
return block
def new_transaction(self, sender, recipient, amount):
"""
Создает новую транзакцию для перехода к следующему замайненному Блоку
:param sender: <str> Address of the Sender
:param recipient: <str> Address of the Recipient
:param amount: <int> Amount
:return: <int> Индекс блока который будет хранить в себе эту транзакцию
"""
self.current_transactions.append({
'sender': sender,
'recipient': recipient,
'amount': amount,
})
return self.last_block['index'] + 1
@property
def last_block(self):
return self.chain[-1]
@staticmethod
def hash(block):
"""
Создает a SHA-256 хэш блока
:параметр block: <dict> Блок
:return: <str>
"""
# Мы должны быть уверены что наш Словарь упорядочен, или мы можем непоследовательные хэши
block_string = json.dumps(block, sort_keys=True).encode()
return hashlib.sha256(block_string).hexdigest()
Алгоритм “Доказательство выполнения работы”
from hashlib import sha256
x = 5
y = 0 # Пока мы не знаем каким должен быть y
while sha256(f'{x*y}'.encode()).hexdigest()[-1] != "0":
y += 1
print(f'The solution is y = {y}')
Реализация простого алгоритма PoW
import hashlib
import json
from time import time
from uuid import uuid4
class Blockchain(object):
...
def proof_of_work(self, last_proof):
"""
Простой алгоритм Proof of Work:
- Ищем число p' такое, чтобы hash(pp') содержал в себе 4 лидирующих нуля, где p это предыдущий p'
- p это предыдущий proof, а p' это новый proof
:параметр last_proof: <int>
:return: <int>
"""
proof = 0
while self.valid_proof(last_proof, proof) is False:
proof += 1
return proof
@staticmethod
def valid_proof(last_proof, proof):
"""
Проверяем Proof: Содержит ли hash(last_proof, proof) 4 лидирующих нуля?
:параметр last_proof: <int> предыдущий Proof
:параметр proof: <int> Тукущий Proof
:return: <bool> True если все верно, иначе False.
"""
guess = f'{last_proof}{proof}'.encode()
guess_hash = hashlib.sha256(guess).hexdigest()
return guess_hash[:4] == "0000"
Настройка Flask для реализации блокчейна
import hashlib
import json
from textwrap import dedent
from time import time
from uuid import uuid4
from flask import Flask
class Blockchain(object):
...
# Создаем экземпляр нашего узла
app = Flask(__name__)
# Генерируем уникальный глобальный адрес для этого узла
node_identifier = str(uuid4()).replace('-', '')
# Создаем экземпляр Blockchain
blockchain = Blockchain()
@app.route('/mine', methods=['GET'])
def mine():
return "We'll mine a new Block"
@app.route('/transactions/new', methods=['POST'])
def new_transaction():
return "We'll add a new transaction"
@app.route('/chain', methods=['GET'])
def full_chain():
response = {
'chain': blockchain.chain,
'length': len(blockchain.chain),
}
return jsonify(response), 200
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
Endpoint для транзакций
import hashlib
import json
from textwrap import dedent
from time import time
from uuid import uuid4
from flask import Flask, jsonify, request
...
@app.route('/transactions/new', methods=['POST'])
def new_transaction():
values = request.get_json()
# Проверяем, что обязательные поля переданы в POST-запрос
required = ['sender', 'recipient', 'amount']
if not all(k in values for k in required):
return 'Missing values', 400
# Создаем новую транзакцию
index = blockchain.new_transaction(values['sender'], values['recipient'], values['amount'])
response = {'message': f'Transaction will be added to Block {index}'}
return jsonify(response), 201
Endpoint для майнинга
import hashlib
import json
from time import time
from uuid import uuid4
from flask import Flask, jsonify, request
...
@app.route('/mine', methods=['GET'])
def mine():
# Мы запускаем алгоритм PoW для того чтобы найти следующий proof...
last_block = blockchain.last_block
last_proof = last_block['proof']
proof = blockchain.proof_of_work(last_proof)
# Мы должны получить награду за найденный proof.
# Если sender = "0", то это означает что данный узел заработал биткойн.
blockchain.new_transaction(
sender="0",
recipient=node_identifier,
amount=1,
)
# Формируем новый блок, путем добавления его в цепочку
block = blockchain.new_block(proof)
response = {
'message': "New Block Forged",
'index': block['index'],
'transactions': block['transactions'],
'proof': block['proof'],
'previous_hash': block['previous_hash'],
}
return jsonify(response), 200
Регистрация новых узлов
...
from urllib.parse import urlparse
...
class Blockchain(object):
def __init__(self):
...
self.nodes = set()
...
def register_node(self, address):
"""
Добавляем новый узел в список узлов
:параметр address: <str> Адрес узла, например: 'http://192.168.0.5:5000'
:return: None
"""
parsed_url = urlparse(address)
self.nodes.add(parsed_url.netloc)
Реализация алгоритма консенсуса
...
import requests
class Blockchain(object)
...
def valid_chain(self, chain):
"""
Определяем, что данный блокчейн прошел проверку
:параметр chain: <list> Блокчейн
:return: <bool> True если прошел проверку, иначе False
"""
last_block = chain[0]
current_index = 1
while current_index < len(chain):
block = chain[current_index]
print(f'{last_block}')
print(f'{block}')
print("\n-----------\n")
# Проверяем, что хэш этого блока корректен
if block['previous_hash'] != self.hash(last_block):
return False
# Проверяем, что алгоритм PoW корректен
if not self.valid_proof(last_block['proof'], block['proof']):
return False
last_block = block
current_index += 1
return True
def resolve_conflicts(self):
"""
Это наш алгоритм Консенсуса, он разрешает конфликт путём
замены нашей цепочки на самую длинную в нашей сети.
:return: <bool> True если наша цепочка была заменена, False если это не так
"""
neighbours = self.nodes
new_chain = None
# Мы ищем цепочки длиннее наших
max_length = len(self.chain)
# Берем все цепочки со всех узлов нашей сети и проверяем их
for node in neighbours:
response = requests.get(f'http://{node}/chain')
if response.status_code == 200:
length = response.json()['length']
chain = response.json()['chain']
# Проверяем, что цепочка имеет
# максимальную длину и она корректна
if length > max_length and self.valid_chain(chain):
max_length = length
new_chain = chain
# Заменяем нашу цепочку, если нашли другую,
# которая имеет большую длину и является корректной
if new_chain:
self.chain = new_chain
return True
return False
Размещено на Allbest.ru
...Подобные документы
Портал государственных услуг как основной компонент системы электронного правительства для граждан в Российской Федерации. Хранение данных в распределенном реестре - одно из важнейших преимуществ информационно-коммуникационной технологии блокчейн.
курсовая работа [155,9 K], добавлен 03.07.2017Формализация бизнес-процессов в сфере жилищно-коммунального хозяйства: содержания жилищного фонда, договорно-правовой деятельности, работы с населением. Обоснование выбора технологии проектирования сайта, разработка структурной схемы и интерфейса.
дипломная работа [2,9 M], добавлен 22.03.2018Основные проблемы технологии управления документооборотом и ведение регистрационно-контрольных форм. Автоматизация делопроизводства компании путем внедрения информационной системы документационного обеспечения. Использование электронной цифровой подписи.
курсовая работа [492,6 K], добавлен 20.10.2010Понятие и структура жилищно-коммунального хозяйства, его составляющие и назначение, участники и их интересы. Особенность оказываемых коммунальных услуг их поставщиками. Методика разработки автоматизированной системы ЖКХ, ее значение в работе хозяйства.
контрольная работа [36,5 K], добавлен 03.06.2010Понятие и этапы жизненного цикла информационной системы. Классификация и характеристика бизнес-процессов. Проектирование архитектуры автоматизированной системы управления документооборотом и баз данных. Разработка интерфейса пользовательской части.
дипломная работа [549,9 K], добавлен 09.02.2018Технологии управления доступом в помещение. Организационно-управленческая характеристика ООО "Новые информационные технологии". Анализ системы технического и программного обеспечения. Разработка проекта системы контроля и управления доступом "Кодос".
дипломная работа [71,6 K], добавлен 16.01.2014Этапы разработка автоматизированной информационной системы предприятия. Среда бизнес моделирования BPwin. Разработка методологических подходов, предложений и указаний по планированию, организации и совершенствованию программного обеспечения организации.
дипломная работа [4,3 M], добавлен 05.07.2009Основы и характеристика технологии Ajax, ее преимущества и применение. Системы, созданные с использованием Ajax, базовые технологии. Файловый веб менеджер на основе технологии Ajax, его основные возможности и принцип реализации программного кода.
курсовая работа [25,6 K], добавлен 23.12.2009Анализ организационной структуры управления и бизнес-процессов компании. Разработка логистической информационной системы, включающей в себя подсистемы управления продажами, запасами и грузоперевозками. Подбор ее программного и технического обеспечения.
дипломная работа [3,2 M], добавлен 18.05.2014Информационные технологии: современное состояние, роль в бизнесе и тенденции развития. Анализ информационной культуры предприятия. Разработка базы данных "Base" и программного обеспечения, обслуживающего базу. Описание интерфейса информационной системы.
дипломная работа [1,8 M], добавлен 02.11.2015Проект программного продукта, представляющего собой веб-приложение в виде системы управления веб-контентом и предназначенного для быстрого создания простых сайтов. Функциональные требования в рамках языка UML. Разработка визуальных интерфейсов системы.
дипломная работа [5,0 M], добавлен 11.07.2012Разработка операторского интерфейса системы мониторинга и управления объекта, обладающего инерционными свойствами. Создание программного обеспечения для отображения данных системы в среде программирования ST. Моделирование имитаторов объекта управления.
курсовая работа [3,1 M], добавлен 14.02.2016Разработка информационной образовательной технологии на основе системы управления обучением Moodle. Теоретические основы электронного образования и программные платформы для организации электронного обучения, преимущества и недостатки такого обучения.
дипломная работа [1,7 M], добавлен 07.07.2012Теоретические аспекты управления бизнес-процессами. Разница функции и бизнес-процесса. История развития процессного управления. Основные и вспомогательные процессы, их автоматизация. Примеры нотации бизнес-процессов 1С и описание технологии Workflow.
презентация [1,6 M], добавлен 13.05.2017Понятие программного обеспечения, вопросы его разработки и использования. Общая характеристика системного программного обеспечения и работа операционной системы. Специфика процесса управления разработкой программного обеспечения и его особенности.
курсовая работа [636,2 K], добавлен 23.08.2011Разработка информационной системы для управления оперативной деятельностью фирмы, занимающейся ремонтом и технической поддержкой компьютеров и программного обеспечения, этапы и особенности. Программные средства реализации проекта, их выбор и обоснование.
дипломная работа [306,6 K], добавлен 28.08.2014Цель создания информационной системы. Автоматизированная информационная система "Строительное предприятие". Использование вычислительной техники и программного обеспечения для создания автоматизированной информационной системы управления на предприятии.
курсовая работа [2,5 M], добавлен 04.01.2011Классификация каналов проникновения в систему и утечки информации. Требования к технологиям информационной безопасности. Аутентификация, основанная на использовании цифровой подписи. Технологии защиты от вирусов. Симметричные криптосистемы шифрования.
диссертация [3,9 M], добавлен 17.05.2015Разработка системы хранения и обработки данных, интерфейса. Использование технологии Xamarin.Forms для организации заполнения путевых листов. Выбор операционной системы, языка и среды программирования. Аппаратная интеграция информационной системы.
дипломная работа [1,7 M], добавлен 09.07.2017Разработка программного обеспечения для управления базой данных. Место задачи в системе автоматизации. Семантическое моделирование данных. Разработка программного обеспечения и базы данных. Расчет трудоемкости и себестоимости этапов проектирования.
дипломная работа [2,9 M], добавлен 04.02.2016