Giter Site home page Giter Site logo

ilyaant / blockchain-bank-project Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 39 KB

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

Solidity 46.59% Python 53.41%
blockchain ethereum pysimplegui python solidity

blockchain-bank-project's Introduction

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

blockchain-bank-project's People

Contributors

ilyaant avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.