Ilyaant / blockchain-bank-project

Командная курсовая работа по дисциплине "Блокчейн-технологии". Проект представляет собой прототип десктопного приложения для взаимодействия с блокчейн-банком

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Blockchain Bank Project

Командная курсовая работа по дисциплине "Блокчейн-технологии" (09.04.03 Прикладная информатика, НИТУ МИСИС): Антонов И. А., Исаченко М. К., Парчиев Р. Б. Проект представляет собой прототип десктопного приложения для взаимодействия с блокчейн-банком.

Стэк использованных инструментов

  • Python
  • Solidity
  • Ganache
  • Библиотеки PySimpleGUI, Brownie

Описание файлов проекта

  • scripts/app.py: основной файл приложения, содержащий код пользовательского интерфейса;
  • scripts/deploy.py: код для деплоя смарт-контрактов;
  • scripts/interact.py: код для проверки работы с контрактами;
  • brownie-config.yaml: файл конфигурации для brownie;
  • contracts/Bank.sol: код основного контракта, предоставляющего функционал выдачи и возврата кредитов;
  • contracts/CreditToken.sol: код контракта, описывающего кастомный токен CreditToken (CRT), необходимый для покупки NFT ювелирных украшений и драгоценностей.

Демонстрация работы с приложением

Начальное окно входа в систему выглядит следующим образом:

image

Здесь пользователю нужно ввести свой логин и пароль. В приложении зарегистрированы 3 аккаунта из тестовой сети, зайдем под логином и паролем acc2 и попадем на главное окно:

image

Здесь отображается текущий баланс пользователя и его задолженность в токенах CRT, а также присутствует возможность взять кредит или вернуть сумму в банк, если кредит взят. Нажав на кнопку "Взять кредит", попадаем в окно выдачи кредита:

image

Введем сумму кредита, количество месяцев, на которое хотим его взять, и нажмем "Рассчитать сумму":

image

Приложение рассчитало, какую сумму на таких условиях будет необходимо вернуть в банк. Нажмем на кнопку "Взять кредит", выводится окно об успехе, и баланс на аккаунте становится на 50 CRT больше:

image image

Затем будем вносить платежи по кредиту. Из главного окна перейдем в соответствующий раздел по кнопке "Вернуть кредит":

image

Введем первую сумму платежа в размере 20 CRT и нажмем "Внести платеж":

image

Баланс уменьшился, как и сумма к погашению. Внесем оставшиеся токены:

image image

Задолженность клиента на главном окне снова составляет 0 CRT:

image

Важно заметить, что если баланс клиента меньше, чем первый взнос по кредиту (сумма кредита, разделенная на количество месяцев), то в кредите ему будет откзано. Проверим это на аккаунте с нулевым балансом:

image image image

Процентная ставка по кредиту рассчитывается следующим образом:

  • если сумма меньше 10 CRT, ставка составляет 10%;
  • если сумма от 10 CRT до 20 CRT, ставка составляет 8%;
  • если сумма больше или равна 20 CRT, ставка составляет 5%.

Инструкция по установке

  1. Установить Ganache: https://archive.trufflesuite.com/ganache/
  2. Установить библиотеку brownie: pip install eth-brownie
  3. Установить библиотеку PySimpleGUI: pip install pysimplegui
  4. Создать пустую папку и выполнить в ней brownie init
  5. Копировать файлы контрактов из этого репозитория в папку contracts/
  6. Копировать файлы скриптов из этого репозитория в папку scripts/
  7. Копировать файл brownie-config.yaml в созданную папку проекта
  8. Создать в папке проекта файл .env, в котором определить переменные PRIVATE_KEY, PRIVATE_KEY1, PRIVATE_KEY2, присвоив им приватные ключи 0-го, 1-го и 2-го адресов тестовой сети Ganache соответственно в формате PRIVATE_KEY = "0x..."
  9. Выполнить brownie compile в папке проекта
  10. Выполнить brownie networks add Ethereum ganache-local host=http://127.0.0.1:7545 chainid=5777, где host и chainid берутся из проекта Ganache.
  11. Выполнить brownie run scripts/deploy.py --network ganache-local
  12. Из вывода предыдущей команды скопировать адреса задеплоенных контрактов и заменить ими имеющиеся адреса в файлах app.py и interact.py
  13. Выполнить brownie run scripts/interact.py
  14. Установка завершена, для работы с программой запустить файл app.py

About

Командная курсовая работа по дисциплине "Блокчейн-технологии". Проект представляет собой прототип десктопного приложения для взаимодействия с блокчейн-банком


Languages

Language:Python 53.4%Language:Solidity 46.6%