Создание мини-приложения для Telegram (Telegram Mini App), в котором пользователи могут получить доступ, используя криптокошелек, для проверки владения определенными NFT. Каждое купленное пользователем NFT (проданного нами же посредством rarible), должно представлять собой долю от общего. Мини-приложение должно корректно отслеживать и отображать общие доли, которые принадлежат пользователю. Цели проекта Обеспечить доступ в мини-приложение Telegram только для тех пользователей, которые владеют определенными NFT. Верифицировать владение NFT через криптокошелек пользователя. Рассчитывать и отображать доли пользователей относительно общей суммы накоплений. Предоставить пользователям интерфейс для входа и проверки их долей. 3. Основные функциональные требования Вход в мини-приложение через криптокошелек: Пользователь должен подтвердить владение своим криптокошельком через подпись сообщения. Подпись будет проверяться с помощью стандартных методов библиотеки Web3 и сравниваться с адресом в базе данных. Проверка владения NFT: Только пользователи, которые владеют NFT, указанным в базе данных, могут войти в приложение. Проверка владения осуществляется путем: Запроса на наличие записи о покупке NFT в базе данных. Проверки владения NFT через контракт на блокчейне (с использованием Web3). Отображение данных о долях: При успешной проверке владения NFT пользователю должно быть отображено: Общее количество долей в накоплении. Количество долей, принадлежащее пользователю. Требуемое количество долей для выполнения условий накопления. Поддержка нескольких накоплений: Система должна поддерживать несколько накоплений, связанных с различными NFT. Каждое накопление имеет свои параметры, такие как общее количество долей. Безопасность: Данные о пользователях и их долях должны быть защищены. Подпись сообщений и проверка владения должны обеспечивать безопасность аутентификации. 4. Функциональные компоненты системы Смарт-контракт: Поскольку продажа осуществляется через rarible, к nft выставленным на площадке уже привязан смарт-контракт База данных: Хранить информацию о проданных NFT, включая: nft_id: ID токена. contract_address: Адрес смарт-контракта. buyer_address: Адрес покупателя. sale_date: Дата продажи. Связь с различными накоплениями (каждое накопление должно хранить свои параметры и связанный с ним набор NFT). Телеграм-бот: Обеспечивает интерфейс взаимодействия с пользователем через Telegram. Запрашивает у пользователя его Ethereum-адрес и подпись сообщения для аутентификации. Проверяет владение пользователем NFT через взаимодействие с базой данных и блокчейном. Отправляет пользователю данные о его долях и накоплениях. Web3-интеграция: Подключение к блокчейну через Web3 для проверки владения и взаимодействия со смарт-контрактом. Верификация подписей пользователей и проверка баланса NFT. 5. Функциональные требования к интерфейсу Мини-приложение Telegram: Мини-приложение должно быть реализовано как веб-приложение, загружаемое через встроенный браузер Telegram. Пользователь должен увидеть приветственное сообщение и предложение подписать сообщение для подтверждения владения криптокошельком. Интерфейс должен отображать текущие и требуемые доли для выбранных накоплений. Telegram-бот: Должен предоставлять команду для входа в мини-приложение (например, /start). Должен поддерживать взаимодействие с пользователем для сбора и проверки данных (Ethereum-адрес, подпись). 6. Нефункциональные требования Безопасность: Проверка подписи должна обеспечивать безопасность аутентификации и предотвращать попытки подмены. Защита от несанкционированного доступа к данным пользователя. Производительность: Проверка и расчет долей должны выполняться быстро и не занимать больше нескольких секунд. Минимизация задержек при взаимодействии с блокчейном.