NFT маркет
Заказчиком данного проекта является крупный бизнесмен из США. На его счету имеется не один проект, который уже функционирует в просторах интернета. Один из его мейн проектов (назовем его так), является продажа real estate за криптовалюту. Нашу компанию наняли для разработки дочернего проекта, связанного с продажей NFT карточек.
Окунемся немного в терминологию. Я думаю, стоит пояснить, что такое NFT карточки. Аббревиатура NFT (non-fungible tokens) означает «невзаимозаменяемый токен». Для наилучшего понимания, что такое токен, необходимо знать, к какой среде они относятся и существуют. В случае с NFT - это блокчейн.
Так что же такое блокчейн? Если объяснить простыми словами и не углубляться в терминологию, то блокчейн - это своего рода база данных, которая хранится на огромном количестве компьютеров. Токены, в свою очередь, представляют собой запись в регистре внутри этой блокчейн-цепочки. Самая главная черта токена - это взаимозаменяемость. Однако, что же делать, если, к примеру, одна картина не может быть идентична другой, один звуковой файл, не может быть похож на другой. Именно для этого и был создан формат невзаимозаменяемых токенов. Ведь каждый NFT неповторим и должен существовать в единственном экземпляре, а вся информация о нем, о его авторе, о всех транзакциях должна храниться в блокчейне. Другими словами, NFT – это цифровой сертификат, прикрепленный к уникальному объекту.
Так что же можно продать в формате NFT? Фактически, все что угодно. Музыку, изображения, текст, видео, 3D-модели – то есть любой претендующий на уникальность цифровой продукт. Особое внимание NFT уделяют коллекционеры (кому, если не им, заниматься поиском уникальных предметов), геймеры (которых интересуют внутриигровые предметы: скины, оружие, коллекционные карточки и т.д.), а также деятели и любители искусства.
И что же делать, если я создал NFT? Существует большое множество площадок, работающих с NFT. Некоторые из таких площадок являются узкоспециализированными и могут разделяться по категориям продаваемых NFT. Например, одна торговая площадка может продавать карточки, связанные только с видеоиграми, а другая, напротив, может быть связана с продажей искусства. Над одной из таких площадок и трудится наша компания Justice IT.
Теперь немного поговорим о функциональной части. На данном проекте все взаимодействие с контрактом происходит на стороне фронт части, а именно: все транзакции, все карточки напрямую берутся с блокчейна и подкрепляются контрактной составляющей. Технологии, с которыми мы работаем на данном проекте:
React JS;
ethersproject/contracts, ethersproject/providers (для обработки транзакций с контракта в приложении используется);
Portis, Metamask, Formatic и Coinbase (в приложении мы поддерживаем множество кошельков для совершения транзакций);
portis и web3 (для реализации их подключения используем именно эти библиотеки);
также web3 используется для взаимодействия с блокчейном;
react-router-dom (с его помощью выполнена маршрутизация на проекте);
aws (используется в качестве облачной платформы с множеством полезных сервисов);
crypto-js (используется для шифровки и расшифровки ключей);
react-player (мы выбрали для воспроизведения аудио и видео);
react-redux (в качестве стейтменеджмента);
react-crop (так как в приложении каждый артист имеет свой аккаунт и возможность изменить главный фон своего профиля и свой аватар, то это используется для того, чтобы выбрать область захвата изображения).
Наша компания реализовала большую часть функционала, а именно главную страницу, где прокручивание карточек происходит с помощью react-carousel. Также мы реализовали сам marketplace, где помимо отображения карточек была разработана обширная фильтрация и поиск. Кроме всего этого, как и в любом маркете с карточками, у артиста должен быть store, в котором он может загрузить, выставить на аукцион или продажу свои творения искусства. Также, как я и говорил, у каждого артиста есть свой профиль, где видны его карточки, есть возможность изменить главный фон профиля, аватар, информацию о себе, а также предоставить свои социальные сети. Помимо всего этого мы реализовали notification, где владелец аккаунта может просмотреть историю своих транзакций и просмотреть, кто на него подписался, когда и кто купил его карточку.
В качестве Agile метрик в проекте было решено использовать Kanban-подход. Это было сделано поскольку команда разработки большая, а kanban предполагает обсуждение производительности в режиме реального времени, полную прозрачность рабочих процессов. Этапы работы визуально представлены на Kanban-доске, что позволяет членам команды видеть состояние каждой задачи в любой момент времени. Поскольку вся команда находится в США, дейли стендапы у нас проходят в 7 часов вечера. Особого дискомфорта это у нас не вызывает, поскольку все задачи расписаны настолько четко, что это позволяет выполнять их без каких либо недопониманий.
Как проходит StandUp: мы обсуждаем, что было сделано сегодня, что будет сделано завтра и есть ли какие-либо блокеры. Также каждый день мы показываем демо о проделанной работе. Этот подход был выбран для того, чтобы не тратить огромное количество рабочего времени на обсуждения в real-time режиме. Для меня такой подход организации рабочего времени был чем-то новым, но это никак не повлияло на работу команды. Я уверенно могу сказать, что все задачи выполняются с большой скоростью.
Трудности, с которыми я столкнулся на проекте: ну прежде всего вся работа с блокчейном. Web3 было для меня чем-то новым. Верный способ для понимания процесса работы с той или иной технологией является изучение документации. Что собственно мной и было сделано. Теперь реализация задач, связанных с блокчейном, не составляет никакой трудности.
В заключении хотелось бы сказать, что я очень рад работать на этом проекте. Любой проект - это прежде всего опыт и изучение нового, а работа с англоязычной командой - это еще и практика в разговорном английском.