Децентрализованное блокчейн-приложение для отслеживания успеваемости студентов университета, управления курсами и аналитики. Система использует обновляемые прокси-контракты на основе OpenZeppelin для возможности обновления логики без потери данных.
Система построена с использованием паттерна прокси-контрактов, что позволяет обновлять логику контрактов без потери данных:
- UniversityAccessControlProxy: Прокси для управления доступом
- CourseManagementProxy: Прокси для управления курсами
- GradeManagementProxy: Прокси для управления оценками
- ScheduleManagementProxy: Прокси для управления расписанием
- StatisticsTrackerProxy: Прокси для отслеживания статистики
- UniversityAccessControlUpgradeable: Управление ролями и доступом
- CourseManagementUpgradeable: Управление курсами
- GradeManagementUpgradeable: Управление оценками
- ScheduleManagementUpgradeable: Управление расписанием
- StatisticsTrackerUpgradeable: Аналитика и статистика
- initialize: Инициализация контракта и назначение администратора
- assignRole: Назначение роли пользователю
- addUser: Добавление нового пользователя с ролью
- getRole: Получение роли пользователя
- hasRole: Проверка наличия роли у пользователя
- initialize: Инициализация контракта
- createCourse: Создание нового курса
- enrollInCourse: Запись студента на курс
- getCourseDetails: Получение информации о курсе
- initialize: Инициализация контракта
- recordGrade: Запись оценки
- markAttendance: Отметка посещаемости
- getGrades: Получение оценок
- getAttendance: Получение данных о посещаемости
- initialize: Инициализация контракта
- createSchedule: Создание расписания
- getSchedule: Получение расписания
- editSchedule: Редактирование расписания
- initialize: Инициализация контракта
- getAverageGrade: Средняя оценка по курсу
- getAttendanceRate: Процент посещаемости
- getAverageGradeByStudent: Средняя оценка студента
- getAttendanceRateByStudent: Процент посещаемости студента
- Node.js (версия 16 или выше)
- Python 3.9 или выше
- Hardhat
- Web3.py
-
Клонируйте репозиторий:
git clone https://github.com/yourusername/university-blockchain-tracker.git cd university-blockchain-tracker
-
Установите зависимости Node.js:
npm install
-
Установите зависимости Python:
pip install -r backend/requirements.txt
-
Настройте переменные окружения:
cp .env.example .env # Отредактируйте .env файл, добавив: # - INFURA_PROJECT_ID # - DEPLOYER_PRIVATE_KEY # - ETHERSCAN_API_KEY
-
Скомпилируйте контракты:
npx hardhat compile
-
Разверните прокси-контракты:
npx hardhat run scripts/deploy_proxies.js --network sepolia
-
Верифицируйте контракты:
npx hardhat verify --network sepolia $(cat .deployed/ProxyAdmin.address) npx hardhat verify --network sepolia $(cat .deployed/UniversityAccessControlProxy.address) # Повторите для остальных прокси-контрактов
-
Запустите тесты Solidity:
npx hardhat test
-
Запустите тесты Python:
pytest backend/tests --cov=backend
- GET /api/courses: Получение списка курсов
- POST /api/courses: Создание нового курса
- GET /api/courses/{id}: Получение информации о курсе
- POST /api/grades: Запись оценки
- GET /api/statistics/{course_id}: Получение статистики по курсу
Бот поддерживает следующие команды:
/start
: Начало работы с ботом/courses
: Список доступных курсов/grades
: Просмотр оценок/schedule
: Просмотр расписания/stats
: Просмотр статистики
- Разверните новую версию логического контракта
- Используйте ProxyAdmin для обновления прокси-контракта
- Верифицируйте новую имплементацию на Etherscan
- Используется Mythril для статического анализа
- Покрытие тестами >95%
- Автоматизированное тестирование в CI/CD
Проект использует GitHub Actions для автоматизации:
- Компиляция и тестирование контрактов
- Развертывание на тестовую сеть
- Верификация контрактов
- Тестирование Python-бэкенда
- Развертывание в AWS ECS
MIT