### Концепт: Каждый выпускной диплом представляется в виде уникального NFT. Этот NFT содержит метаданные, которые могут включать информацию о владельце диплома, образовательном учреждении, дате выпуска и другие детали диплома. Метаданные и содержимое NFT хранятся в IPFS для обеспечения постоянства и целостности данных. Сама NFT (картинга) генерируется при помощи диффузионных моделей (stable diffusion) с определённым запросом и параметрами, отражающими внутревузовские достижения студента (цвет, атрибуты...) ### Архитектура: **!Используется блокчейн Polygon!** 1. **Смарт-контракт (Solidity)**: Сердце системы, включает в себя всю логику для создания, передачи и уничтожения NFT, а также контроль над правами доступа. 2. **Backend (Python, Web3Py, ThirdWeb, FastAPI)**: Служит для взаимодействия с блокчейном, обработки запросов от пользователей, управления смарт-контрактом и взаимодействия с IPFS. 3. **IPFS**: Используется для хранения метаданных и содержимого NFT. 4. **Frontend (JavaScript, React, ThirdWeb SDK)**: Обеспечивает удобный интерфейс для пользователя, используя ThirdWeb SDK для упрощения работы с блокчейном. 5. **База данных (PostgreSQL)**: Используется для хранения информации о пользователях и токенах на уровне приложения. ### Задачи: 1. **Автоматизированное создание изображений:** Создайте систему, которая автоматически создает картинку NFT-диплома на основе предоставленной информации. Эта система должна использовать диффузионные модели для генерации уникального изображения для каждого NFT. 2. **Создание смарт-контракта для выпуска NFT:** 1. **Создание NFT:** контракт должен позволять создавать уникальные NFT-токены (дипломы) с уникальными хэшами, на основе метаданных, которые определяются пользователями. 2. **Распространение NFT:** смарт-контракт должен позволять распространять NFT-токены между пользователями. 3. **Проверка владельца NFT:** при передаче NFT-токена от одного пользователя к другому, контракт должен проверять, что владелец NFT-токена совпадает с отправителем транзакции. 4. **Уничтожение NFT:** пользователи должны иметь возможность уничтожать свои NFT-токены, если они считают, что это необходимо. 5. **Защита от несанкционированного доступа:** смарт-контракт должен быть защищен от несанкционированного доступа или изменения метаданных NFT-токенов, которые могут повлиять на их целостность и подлинность. 3. **Разработка фронтенда для пользовательского интерфейса:** Создайте пользовательский интерфейс под удобное взаимодействие со смарт-контрактом. 4. **Управление данными NFT:** Разработайте интерфейсы и API для управления данными NFT, включая создание, обновление, удаление и поиск NFT-дипломов. ### На случай нехватки задач: 1. **Разработка архитектуры БД и разграничение прав доступа:** Разработайте совместимую с предложенной архитектурой БД и создайте необходимые роли с требующимися правами. 2. **Разработайте новый алгоритм хэширования :D (со следующими свойствами):** 1. при изменении одного бита во входных данных, должно наблюдаться изменение всего хэша; 2. алгоритм должен быть устойчив к коллизиям; 3. алгоритм должен быть устойчив к восстановлению хешируемых данных, то есть должна обеспечиваться высокая сложность нахождения прообраза, а вычисление хэша не должно быть простым.