Skip to content

Latest commit

 

History

History
72 lines (57 loc) · 4.91 KB

File metadata and controls

72 lines (57 loc) · 4.91 KB

NFT-1155 + Chainlink + IPFS

ТЗ

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

Смарт-контракт должен иметь функционал:

setMintFee() - функцию установки комиссии для минтинга; requestNFT() - функция которая должна принимать эфир и делать запрос на случайное число в chainlink VRF; fulfillRandomWords() - функция которая должна получать случайное число, определять какой токен нужно сминтить в зависимости от полученного числа и редкости токенов, и конечно минтить этот токен пользователю который заплатил соответствующее количество денег. setTokenURI() - возможность задавать uri для каждого токена; withdraw() - забор средств со смарт-контракта, должен уметь только owner контракта; getMintFee() - должен возвращать комиссию для минтинга токенов; uri() - должен возвращать uri конкретного токена;

Данные по редкости:

    PUG = 0; // 10% chance
    SHIBA_INU = 1; // 20% chance
    ST_BERNARD = 2; // 70% chance

Критерии прохождения задания:

  • Изучить стандарт ERC-1155, разобрать все основные методы.
  • Написать ERC-1155 с использованием OpenZeppelin, chainlink.
  • Для каждого из трех токенов должен быть свой uri.
  • Загрузить картинки токенов и метаданные токенов в IPFS используя сервис на свое усмотрение.
  • Деплой смарт-контрактов в тестовую сеть.
  • Написать тесты для смарт-контрактов.
  • Пройтись по литературе на которую приведены ссылки.

Дополнительно:

  • Попробовать написать скрипты для программной загрузки файлов на ipfs.
  • Попробовать использовать другие расширения ERC-1155 от OpenZeppelin.

Какие навыки даст задание?

  1. Понимание общего принципа работы стандарта NFT-1155 и его дополнений.
  2. Понимание что такое IPFS и как с ними работать.
  3. Умение писать скрипты для программной загрузки файлов на ipfs.
  4. Закрепить знания как получать рандомное число с chainlink.

Вопросы по теории:

  1. Какие главные отличия erc-1155 от erc-721?
  2. Что такое token URI и как можно его задавать в erc-1155?
  3. Как использовать Chainlink для получения рандомного числа?
  4. Какие методы должны быть в токене ERC-1155? Что они делают?
  5. Чем отличается safeTransferFrom от safeBatchTransferFrom?
  6. Чем отличается approve от setApprovalForAll? Как отозвать каждый из апрувов?
  7. Для чего нужен метод setURI?
  8. Какие расширения ERC-1155 есть у OpenZeppelin? Какой функционал добавляют следующие расширения:
    • ERC1155Pausable
    • ERC1155Burnable
    • ERC1155Supply
    • ERC1155URIStorage

Литература: