Является отдельным подвидом MysteryBox (технически, это скорее всего просто отдельный тип NFT). При сжигании данного типа NFT у пользователя есть шанс получить NFT типа Camera с определенной долей вероятности.

Наличие этого отдельного типа NFT решает следующие проблемы:

  1. Мы решаем вопрос со “скрещиванием” двух камер для получения третьей (считаю некорректным тот факт что за минт мы будем отдавать обычные MysteryBox, так как верным является предположение что из двух камер мы можем собрать новую камеру, а не просто фильтр или линзу);
  2. Решаем вопрос с элементами, которые могут присутствовать в marketplace нашего приложения. Мы сможем сами выставлять в маркетплейс боксы именно с камерами, и сами пользователи не будут впадать в заблуждение с ценами и содержимым выставляя или покупая боксы других пользователей.

Существует 5 уровней редкости CameraBox. В зависимости от уровня CameraBox распределяются вероятности получения камеры определенного уровня редкости.

Камера, которая появляется в результате сжигания MysteryBox всегда имеет первый уровень (те, которые можно прокачать).

Для того чтобы “открыть” CameraBox нужно потратить определенное количество внутренней валюты (возможно еще и UMINT). Количество, необходимое для открытия бокса, зависит от его уровня.

Уровень CameraBox common camera uncommon rare epic legendary
common 95% 5% 0% 0% 0%
uncommon 15% 80% 5% 0% 0%
rare 5% 15% 75% 5% 0%
epic 0% 5% 20% 70% 5%
legendary 0% 0% 5% 30% 65%

Предполагаю что CameraBox можно:

Metadata structure (WIP)

NFT Contract Metadata

{
  spec: "nft-2.0.0",
  name: "YouMinter CameraBox", 
  symbol: "YMCB", // YouMinter CameraBox
  icon: "", // необходимо нарисовать иконку для всех CameraBox
}

Token Metadata

{
  title: "CameraBox #{N}", // где N – порядковый номер | возможно стоит использовать "YouMinter CameraBox #{N}"???
  description: "", // нужно придумать какое-то общее описание
  media: "<https://cdn.youminter.com/nft/camerabox/{rarity}.png>", // это хранилище я реализую
  media_hash: string, // Base64-encoded sha256 hash of content referenced by the `media` field. Required if `media` is included.
  issued_at: number, // When token was issued or minted, Unix epoch in milliseconds
  extra: '{"genesis":true}', // я думаю есть смысл хранить данные о свойстве genesis прямо внутри токена. Все последующие NFT будут уже с пустым значеним поля extra
  reference: "<https://metadata.youminter.com/camerabox/{N}.json>", // этот сервис я реализую
  reference_hash: string // Base64-encoded sha256 hash of JSON from reference field. Required if `reference` is included. Тут важно понять, не сломается ли ничего в стандарте, если мы потом изменим контент файла reference. Ведь хеш уже будет другим. Не "умрет" ли токен в таком случае из-за несовпадения хеша с контентом?
}

Структура reference JSON файла с метаданными: