2 спецальная часть 2 1 Описание исходных данных 2
Скачать 1.56 Mb.
|
2.9 Разработанное программное обеспечениеУ нас есть базовый блокчейн, который принимает транзакции и позволяет нам добывать новые блоки. Но весь смысл блокчейна в том, что они должны быть децентрализованы. И если они децентрализованы, как же мы можем гарантировать, что все они отображают одну и ту же цепочку? Это называется проблемой консенсуса, и мы должны будем реализовать алгоритм консенсуса, если нам нужно более одного узла в нашей сети. Регистрация новых узлов: Прежде чем мы сможем реализовать согласованный алгоритм, нам нужен способ сообщения узлу о соседних узлах в сети. Каждый узел в нашей сети должен вести реестр других узлов в сети. Таким образом, нам понадобятся еще несколько конечных точек. 1. /nodes/register чтобы принять список новых узлов в виде URL-адресов. 2. /nodes/resolve для реализации нашего согласованного алгоритма, который разрешает любые конфликты – чтобы убедиться, что узел имеет правильную цепочку. Далее нам нужно изменить конструктор нашего блокчейн и предоставить метод для регистрации узлов (рисунок 2.28): Рисунок 2.28 – Метод регистрации узлов Для хранения списка узлов мы использовали set (). Это простой способ гарантировать, что добавление новых узлов идемпотентно – то есть независимо от того, сколько раз мы добавляем конкретный узел, он появляется ровно один раз. Реализация алгоритма консенсуса (рисунок 2.29) Рисунок 2.30 – Реализация алгоритма консенсуса Как уже упоминалось ранее, конфликт возникает, когда один узел имеет другую цепочку к другому узлу. Чтобы решить эту проблему, мы установим правило, что самая длинная действительная цепочка является авторитетной. 61 Другими словами, самая длинная цепочка в сети является де-факто. Используя этот алгоритм, мы достигаем консенсуса среди узлов в нашей сети. Первый метод valid_chain () отвечает за проверку допустимости цепочки, просматривая каждый блок и проверяя как хеш, так и доказательство. resol_conflicts () – это метод, который проходит по всем соседним узлам, загружает их цепочки и проверяет их, используя вышеуказанный метод. Если найдена правильная цепочка, длина которой больше нашей, мы заменяем нашу. Зарегистрируем две конечные точки в нашем API (рисунок 2.31), одну для добавления соседних узлов, а другую для разрешения конфликто Рисунок 2.31 – Регистрация двух конечных точек API На данном этапе понадобится второй компьютер или же можно добавить узлы в сеть, используя разные порты на одном компьютере. Было решено развернуть другой узел на второй машине, на другом порту, затем производится регистрация его на текущем узле. Таким образом, имеем два узла: http://localhost:5000 и http://localhost:5001 (рисунок 2.32). Рисунок 2.32 – Регистрация узлов на двух портах Затем было добыто несколько новых блоков на узле 2 (рисунок 2.33), чтобы убедиться, что цепочка длиннее. После этого вызываем GET /nodes/resolve на узле 1, где цепочка была заменена алгоритмом консенсуса: Рисунок 2.33 – «Добыча» новых блоков на узле 2 2.10 РезультатыСтартовое окно приложения Рисунок 2.34 – Стартовое окно приложения При запуске программы открывается стартовое окно приложения (рисунок 2.35). Пользователю предлагается ввести свой секретный идентификатор и войти в сеть, либо создать новый кошелёк. При создании нового кошелька для пользователя случайным образом генерируется уникальный закрытый ключ, который будет являться его личным идентификатором для входа. При входе в приложение открывается главное окно, и на основе закрытого ключа генерируется открытый адрес кошелька пользователя, с 20 помощью которого он может совершать транзакции и отслеживать изменения баланса. Главное окно приложения содержит основные элементы управления, сгруппированные по вкладкам: Обзор, Мой кошелёк, Новая транзакция и Майнинг. Обозреватель блоков Рисунок 2.35 – Вкладка Обзор блоков На вкладке обзор (рисунок 2.35) пользователь может просмотреть всю необходимую информацию о любом существующем блоке цепочки. Навигацию между блоками осуществляется посредством нажатия кнопок Предыдущий блок и Следующий блок, либо посредством указания номера блока в текстовом поле. Вкладка Мой кошелёк Рисунок 2.36 – Вкладка Мой кошелёк Вкладка мой кошелёк (рисунок 2.36) предоставляет пользователю возможность просмотреть историю всех исходящих и входящих транзакций его кошелька, узнать свой баланс и идентификатор кошелька. Идентификатор кошелька служит адресом для получения и перевода средств при создании транзакции Создание новой транзакции Рисунок 2.37 – Вкладка Новая транзакция Элементы управления для создания транзакции находятся на вкладке новая транзакция (рисунок 2.37). Для создания новой транзакции пользователь должен заполнить форму составления транзакции, в соответствии с указанными на странице правилами. По нажатию на кнопку подтвердить будет выведено диалоговое окно предлагающее пользователю проверить и подтвердить введённые данные, либо диалоговое окно сообщающее о ошибке в составлении транзакции. Ошибкой в составлении транзакции может являться как неправильное заполнение полей, так и нехватка средств. При выборе отправки транзакции с комиссией, можно указать размер комиссии включённой в транзакцию. В этом случае средства для оплаты комиссии будут сняты со счёта пользователя сверх суммы перевода. Если оставить поле пустым то, размер комиссии будет составлять 0.5% от суммы перевода. После подтверждения транзакции она отправляется в список необработанных транзакций и ожидает включения в следующий блок. Управление майнингом Рисунок 2.38– Вкладка Майнинг Вкладка майнинг (рисунок 2.38) включает в себя элементы управления для создания и майнинга блоков. В текстовом поле «Необработанные транзакции» отображаются транзакции, которые ещё не были включены в блокчейн. Нажатие на кнопку Обновить посылает в пул запрос об обновлении списка необработанных транзакций. Кнопка создать блок отвечает за конфигурирование нового блока. При её нажатии создаётся новый блок, в который помещается 10 необработанных транзакций из списка, а в текстовое поле «Данные о новом блоке» помещается информации о данном блоке. При нажатии кнопки Добыть блок в отдельном потоке начинается процесс майнинга сконфигурированного блока. При успешной добыче блока, новый блок рассылается всем активным узлам цепи, а в клиентском окне появляется уведомление о успешном создании нового блока. 2.11 Анализ результатовВ связи с возрастающим влиянием электронных денег в мировой экономике и постепенным внедрением технологий распределённого реестра во многие сферы жизни общества, нельзя не сказать об актуальности детального изучения технологии блокчейн. В рамках данной курсовой работы были достигнуты следующие результаты: - Изучены основные понятия и принципы, заложенные в технологии блокчейн. - Проведён анализ аналогичных продуктов и выявлены их недостатки. - Разработано настольное приложение на языке программирования Java, представляющее собой пиринговую платёжную систему и реализующее все основные функции рассмотренной технологии блокчейн. Список литературыEthereum Average Block Time Chart – Дата обновления: 23.05.2020. URL: https://etherscan.io/chart/blocktime (дата обращения 24.05.2023). Ethereum token market cap and share – Дата обновления: 30.01.2018. URL: https://coinmarketcap.com/ru/currencies/ethereum/ (дата обращения 11.04.2020) Guide to Ethereum: What is Gas, Gas Limit and Gas Price – Дата обновления: 14.05.2019. URL: https://masterthecrypto.com/ethereum-what-is-gas-gaslimit-gas-price/ (дата обращения 24.05.2023). Internet Live Stats [Электронный ресурс] - URL: http://www.internetlivestats.com/internet-users/ Revain's AI: Using NextGen IBM Watson To Filter Reviews – Дата обновления: 11.04.2018. URL: https://revain.org/blog/revains-ai-using-nextgen-ibmwatson-to-filter-reviews (дата обращения 24.05.2023). S. Nakamoto. Bitcoin: A peer-to-peer electronic cash system. 2009. - URL: https://bitcoin.org/bitcoin.pdf V. Buterin. Secret sharing and erasure coding: A guide for the aspiring dropbox decentralizer. 2014. - URL: https://blog.ethereum.org/2014/08/16/secret-sharing-erasurecoding-guide-aspiring-dropbox-decentralizer/ What is Revain? – Дата обновления: 16.10.2018. URL: https:// ico.coincheckup.com/revain/ (дата обращения 24.05.2023). Алекс Тапскотт. Революция блокчейна. , 2016. – 416с. Воронцова Е.А., Мелешенко Е.Г. Блокчейн: панацея или угроза для хранения и передачи информации // Синергия наук. 2016. № 5. ? С. 93 ? 101. ? URL: http://synergy-journal.ru/archive/article0044 Криптовалюта: Revain (R) – обзор – Дата обновления: 30.01.2018. URL: https://inp.one/cryptoworld/kriptovalyuta-revain-r-obzor (дата обращения 24.05.2023). Лелу, Л. Блокчейн от А до Я. Все о технологии десятилетия / Л. Лелу. – Litres, 2018. – 265 с. Максуров, А.А. Криптовалюты и правовое регулирование их обращения. 2-е изд. / А.А. Максуров. – Дашков и Ко, 2019. – 355 с. Михеев, А. Блокчейн: Как это работает и что ждет нас завтра / А. Михеев, А. Генкин. – Альпина Паблишер, 2017. – 626 с. оджер Воттенхофер. Наука о блокчейне, 2014 – 730c. 3 Информационно-аналитический ресурс, посвященный технологии блокчейн – URL: http://www.machinelearning.ru [17 Мая 2018]. Прасти, Н. Блокчейн. Разработка приложений / Н. Прасти. – БХВ-Петербург, 2018. – 256 с. Свон, М. Блокчейн. Схема новой экономики / М. Свон. – Олимп-Бизнес, 2017. – 190 с. Тапскотт, А. Технология блокчейн. То, что движет финансовой революцией сегодня / А. Тапскотт, Д. Тапскотт. – Эксмо, 2017. – 713 с. |