---
# System prepended metadata

title: Producton
tags: [nft]

---

### Концепт:
Каждый выпускной диплом представляется в виде уникального 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. алгоритм должен быть устойчив к восстановлению хешируемых данных, то есть должна обеспечиваться высокая сложность нахождения прообраза, а вычисление хэша не должно быть простым. 
