В этой статье описывается, как создать контракт игровых активов ERC1155. После изучения возможностей солидности я вижу здесь первый момент, чтобы сделать разрез и записать свои впечатления.

Это еще не финальная версия, которую я хочу создать, но она близка к ней, и, кроме того, уже решено много проблем, с которыми я столкнулся при разработке. Поэтому ему нужна первая документация.

Подробности об игровом активе

Контракт токена ERC1155 будет иметь 11 идентификаторов токенов. Это будут:

0. Основная игровая валюта

  1. Общие активы игрока
  2. Актив игрока Редкий
  3. Эпический актив игрока
  4. Миф об активах игрока
  5. Легендарный актив игрока
  6. Общий фрагмент актива
  7. Фрагмент Актива Редкий
  8. Эпический фрагмент актива
  9. Фрагмент актива CommonMyth
  10. Легендарный Фрагмент Актива

Идея состоит в том, чтобы иметь возможность чеканить активы игрока с помощью внутриигровой валюты, фрагментов и собственной валюты.

Следующая версия должна содержать дополнительный токен ERC20 для обмена друг с другом.

Фиксированные и гибкие метаданные

Основное намерение состояло в том, чтобы проверить, могу ли я комбинировать фиксированные компоненты метаданных (загруженные в ipfs и впоследствии не подлежащие изменению в контракте) с гибкими компонентами (такими как значения статуса).

Поэтому я оставил стандартный URI токена ERC1155 без изменений. В этом примере он останется обновляемым, но, очевидно, достаточно махинаций, чтобы деактивировать эту механику:

  • Переопределить функцию setTokenURI перед созданием контракта
  • Добавьте bool isUpgradeable и добавьте только функцию, чтобы установить для нее значение false

Для целей тестирования было просто лучше оставить его обновляемым.

Так что же я сделал? В итоге все оказалось намного проще, чем я думал. Я только что добавил функцию getStatsURI. Это возвращает (на основе параметра редкости при вызове) URI состояния, который содержит объект json с предопределенными значениями. Далее идут функции для обновления URI статуса.

Большинство проблем возникало при попытке купить или отчеканить активы. Но в итоге все работает нормально.

Процесс развития

Разработка содержит две основные темы (сама разработка игры не рассматривается):

Раньше: создание и загрузка метаданных

  1. Настраивать

Я работал с учетной записью пиньяты, чтобы загрузить метаданные в ipfs. Есть и другие способы реализовать это, но если вам нужно настроить учетную запись пиньяты, вы можете проверить мой пример загрузки метаданных в ipfs:



2. Загрузить

Подробное описание структуры метаданных и шаги по ее загрузке можно найти в следующем репозитории git:



Затем: разработка контракта, развертывание и тестирование функциональности.

  1. Настраивать

Если вам нужно настроить рабочее пространство контракта, вы можете проверить мой первый пример для контракта хранилища NFT URI, я попытался собрать все шаги для рабочего sutp там:



2. Контракт

Проверьте мой репозиторий git с контрактом для подробного описания и тестов функциональности:



3. Договоритесь о простой альтернативе, чтобы войти в тему

Если контракт слишком сложный, вы также можете начать с самого простого примера для контракта ERC1155, который я создал в начале:



Резюме и «Что дальше?»

Это был просто обзор того, как структурирован проект. В основном вся информация уже доступна в git-репозитории, в любом случае я более подробно рассмотрю реализованную механику в следующей части. Также постараюсь предоставить данные о расходах на газ и откуда они берутся.

Берегите себя, проводите собственные исследования и удачного кодирования ✌️