В этой статье описывается, как создать контракт игровых активов ERC1155. После изучения возможностей солидности я вижу здесь первый момент, чтобы сделать разрез и записать свои впечатления.
Это еще не финальная версия, которую я хочу создать, но она близка к ней, и, кроме того, уже решено много проблем, с которыми я столкнулся при разработке. Поэтому ему нужна первая документация.
Подробности об игровом активе
Контракт токена ERC1155 будет иметь 11 идентификаторов токенов. Это будут:
0. Основная игровая валюта
- Общие активы игрока
- Актив игрока Редкий
- Эпический актив игрока
- Миф об активах игрока
- Легендарный актив игрока
- Общий фрагмент актива
- Фрагмент Актива Редкий
- Эпический фрагмент актива
- Фрагмент актива CommonMyth
- Легендарный Фрагмент Актива
Идея состоит в том, чтобы иметь возможность чеканить активы игрока с помощью внутриигровой валюты, фрагментов и собственной валюты.
Следующая версия должна содержать дополнительный токен ERC20 для обмена друг с другом.
Фиксированные и гибкие метаданные
Основное намерение состояло в том, чтобы проверить, могу ли я комбинировать фиксированные компоненты метаданных (загруженные в ipfs и впоследствии не подлежащие изменению в контракте) с гибкими компонентами (такими как значения статуса).
Поэтому я оставил стандартный URI токена ERC1155 без изменений. В этом примере он останется обновляемым, но, очевидно, достаточно махинаций, чтобы деактивировать эту механику:
- Переопределить функцию setTokenURI перед созданием контракта
- Добавьте bool isUpgradeable и добавьте только функцию, чтобы установить для нее значение false
Для целей тестирования было просто лучше оставить его обновляемым.
Так что же я сделал? В итоге все оказалось намного проще, чем я думал. Я только что добавил функцию getStatsURI. Это возвращает (на основе параметра редкости при вызове) URI состояния, который содержит объект json с предопределенными значениями. Далее идут функции для обновления URI статуса.
Большинство проблем возникало при попытке купить или отчеканить активы. Но в итоге все работает нормально.
Процесс развития
Разработка содержит две основные темы (сама разработка игры не рассматривается):
Раньше: создание и загрузка метаданных
- Настраивать
Я работал с учетной записью пиньяты, чтобы загрузить метаданные в ipfs. Есть и другие способы реализовать это, но если вам нужно настроить учетную запись пиньяты, вы можете проверить мой пример загрузки метаданных в ipfs:
2. Загрузить
Подробное описание структуры метаданных и шаги по ее загрузке можно найти в следующем репозитории git:
Затем: разработка контракта, развертывание и тестирование функциональности.
- Настраивать
Если вам нужно настроить рабочее пространство контракта, вы можете проверить мой первый пример для контракта хранилища NFT URI, я попытался собрать все шаги для рабочего sutp там:
2. Контракт
Проверьте мой репозиторий git с контрактом для подробного описания и тестов функциональности:
3. Договоритесь о простой альтернативе, чтобы войти в тему
Если контракт слишком сложный, вы также можете начать с самого простого примера для контракта ERC1155, который я создал в начале:
Резюме и «Что дальше?»
Это был просто обзор того, как структурирован проект. В основном вся информация уже доступна в git-репозитории, в любом случае я более подробно рассмотрю реализованную механику в следующей части. Также постараюсь предоставить данные о расходах на газ и откуда они берутся.
Берегите себя, проводите собственные исследования и удачного кодирования ✌️