Является отдельным подвидом MysteryBox (технически, это скорее всего просто отдельный тип NFT). При сжигании данного типа NFT у пользователя есть шанс получить NFT типа Camera с определенной долей вероятности.
Наличие этого отдельного типа NFT решает следующие проблемы:
Существует 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 можно:
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 файла с метаданными: