Технический разбор грядущего NFT-Marketplace LiberMall для TON
Цель NFT-Marketplace Libermall, переосмыслить устоявшееся представление о взаимодействии пользователя с пользователем с использованием смарт-контрактов Web3.0 на технологиях блокчейна TON. Мы хотим, чтобы пользователи наблюдали развитие нашего Marketplace с его зарождения. Сегодня мы поделимся важной технической информацией о продукте.
Первый маркетплейс в привычном нам понимании (компания eBay) появился на рынке 27 лет назад. В 2022 году маркетплейсы – один из самых популярных посредников между продавцами и покупателями. Широкий выбор, удобство и простота использования, возможность сравнивать цены и выбирать товары из сотен вариантов – всё это повысило востребованность маркетплейсов на рынке и сделало их основным каналом для торговли.
Первые настройки
Была проведена работа с деплоем контрактов в блокчейн. Также было решено отказаться от использования сторонних API и всю необходимую функциональность интегрировать в бэкенд нашего индексатора блокчейн для Libermall. С использованием наших серверов, где установлена архивная нода.
Индексатор Блокчейн и OpenAPI
- Сервис для индексации (в будущем и для постоянного обновления) информации о коллекциях и предметах. Сервис читает данные из блокчейна (адреса, индексы предметов и прочее), роялти, офф-чейн метаданные (названия, описания). Функционал работает с 80% предметов, позже будет добавлены поддержка он-чейн данных IPFS и TON Storage.
- API бэкенд, отдающий данные клиентам.
Также велась работа с кэширующим прокси для контента, чтобы пользователи не испытывали дискомфорт при загрузке картинок через IPFS и TON Storage.
- Все модули работают на одном фреймворке, который нативно поддерживает реактивность.
- Проведен успешный минт ~2,500 предмета в четырёх NFT-коллекциях в тестовой сети TON.
- Реализован API для трансфера и продажи предметов. Схема работы: клиент делает запрос, сервер возвращает готовое тело транзакции, после этого клиент посылает эту транзакцию через подключенный кошелек.
Реализация эффективна за счёт того, что серверу не нужно самостоятельно посылать никаких транзакций или хранить ключи от кошельков.
После разработки вышеперечисленного, была проведена работа с кэшем для контента, также проводилась оптимизация по ускорению и улучшению индексера.
Получение информации из блокчейна и третьих сервисов
- Сделаны интерфейсы для контрактов коллекций, предметов, продажи и расширения роялти, доступна совместимость с уже заминченными контрактами в mainnet.
- Готов интерфейс для метаданных. На данный момент доступна поддержка только офф-чейн данных, большинство NFT используют только их.
- Разработан инструмент для получения и периодического обновления данных о коллекциях и предметах из блокчейна, оптимизация будет продолжаться.
Бэкенд сервер и API
- Готово серверное приложение для взаимодействия с пользователями. Приложение позволяет получать данные о коллекциях и предметах, и получать их контент (изображения). Также оно может генерировать сообщения для клиента, которые позволят пользователю передавать и продавать предметы.
- Будет проведена работа по подготовке методов для получения информации о продажах и пользователях (например, какие предметы принадлежат определенному аккаунту и прочее).
- Готовится функционал для возможности мануального контроля предметов и коллекций.
- Все существующие API документированы и автоматически генерируют спецификацию для разработки клиентских приложений (фронта).
- Проведена работа, которая позволяет при запросе информации от клиента брать её из блокчейна или кэша сервера, что эффективно устраняет возможность того, что сервер может не синхронизироваться с блокчейном и снижает общую загрузку сервера.
- Индексирования коллекций и предметов не будет, новые утверждённые коллекции будут доступны немедленно, а краулер-сервис по итогу был отброшен. Касательно одобрений — они будут реализованы, как белый список, где предметы и коллекции, не входящие в этот список, не будут показаны.
- REST API был заменён на GraphQL, поскольку он лучше соответствует новой модели и легче интегрируется с современными фронтенд-фреймворками. Это значит, что, вместо того чтобы запрашивать всю доступную информацию, клиенту будет отправляться только то, что ему необходимо, что снижает нагрузку на сервер и общую пропускную способность.
- Был настроен собственный сервер изображений, который может поспособствовать кэшированию и изменению размера фактического контента для клиентов. Это может помочь справиться с тем, что многие коллекции используют медленные IPFS-прокси для обслуживания своего контента, а он не подходит для онлайн-использования (слишком высокое разрешение, большой размер, не оптимизированные форматы изображений).
Контракты продаж и маркетплейса
- Контракт продажи — это почти неизмененный официальный NFT-sale. Ведется работа по его корректной работе инициализации с контрактом маркетплейса.
- Контракт маркетплейса тоже находится в активной разработке, также будет проведена работа по безопасности.
Оптимизация фронтенда
- Перенесена домашняя страница на использующийся фреймворк, которая составляет около 98% от оригинального шаблона.
- Оптимизируется прототип входа в систему с помощью Tonkeeper и TonHub.
- В качестве теста нового GraphQL API, показывает фактические коллекции блокчейна на главной странице (picrelated). В то время как информация о покупке и продаже является заполнителем; название коллекции, адрес и изображения были получены из бэкенда.
Подписывайся на социальные сети: Twitter, Medium, VK, TikTok, Reddit, YouTube, Дзен, Telegram, Github, Linkedin.