Изящный

Мы все видели повальное увлечение CryptoKitty и последующий взрыв коллекционирования NFT в экосистеме Ethereum. NFT или невзаимозаменяемые токены - это набор контрактов, которые представляют собой набор ограниченных и уникальных токенов. В отличие от стандарта ERC20, где каждый токен является взаимозаменяемым и представлен просто балансом учетной записи, ERC721 рассматривает каждый токен как неделимый и уникальный актив. Каждый токен представлен своим владельцем, идентификатором токена и URL-адресом метаданных. Вот пример токена, который я создал с помощью простых метаданных:



Мета-данные определяют изображение, тип наклейки (временная татуировка) и липкость (65%).

Генератор NFT

Я хотел создать простой пользовательский интерфейс, который позволил бы людям, плохо знакомым с криптовалютой, собирать NFT. Поскольку приобретение криптовалюты является высоким барьером для входа, мне пришлось придумать подход, который не требовал от пользователя платить за газ. Я решил создать автоматизированное задание, которое запускается с помощью QR-кода.

QR-код направляет пользователя на веб-сайт. Веб-сайт обнаруживает поставщика web3 и отправляет внутренний запрос веб-перехватчику Logic App, передавая адрес Ethereum пользователя. Приложение Logic генерирует новый NFT, используя свою профинансированную учетную запись Ethereum, и возвращает URL-адрес только что созданного NFT. Затем веб-сайт перенаправляет пользователя для просмотра NFT на OpenSea.

Попробуйте сами:

  1. Загрузите мобильное приложение Opera (android) или imToken
  2. Откройте в приложении следующий QR-код

Вы можете представить себе новые варианты использования генератора QR NFT:

  • Охота за мусором NFT с ограниченным сканированием на QR-код
  • Цифровые сувениры для раздачи на конференциях, демонстрациях или встречах
  • Предметы лояльности для читателей вашего блога

В оставшейся части этого поста вы узнаете, как создать собственный генератор NFT с QR-кодом.

Разверните свой NFT

Контракт ERC721 действует как набор невзаимозаменяемых токенов. Фактические NFT могут быть отчеканены после развертывания контракта. Контракт чрезвычайно прост, поскольку мы позволяем библиотеке OpenZeppelin выполнять тяжелую работу.

pragma solidity ^0.5.0;
import 'openzeppelin-solidity/contracts/token/ERC721/ERC721MetadataMintable.sol';
import 'openzeppelin-solidity/contracts/ownership/Ownable.sol';
/**
* @title Sticker Collectible
* Sticker NFT - a contract for non-fungible stickers.
*/
contract StickerCollectible is ERC721Metadata("CryptoStickers", "CS"), Ownable, ERC721MetadataMintable {}


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

truffle-flattener ./contracts/StickerCollectible.sol > StickerCollectibleFlattened.sol

Разверните контракт, используя выбранную вами программу развертывания контрактов. Я просто закинул его в Remix и использовал свой кошелек MetaMask.

Зарегистрируйте контракт на OpenSea



OpenSea предоставляет удобный браузер для просмотра ваших NFT. После регистрации адреса контракта вы можете просмотреть контракт, перейдя по ссылке:

Https://rinkeby.opensea.io/assets/ ‹name›

Пример: https://rinkeby.opensea.io/assets/crypto-stickers

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

Создайте свое приложение логики

Logic Apps - это платформа в Azure, которая обеспечивает невероятно простой способ создания автоматизации (подумайте о IFTTT). Logic Apps имеет рынок с более чем 200 различными коннекторами, от потребительских (Twitter, Twilio, Instagram) до предприятий (SAP, GitHub, Excel) и всего, что между ними. Недавно мы опубликовали несколько Коннекторов Ethereum, чтобы сделать автоматизацию блокчейна еще проще. В этом руководстве мы собираемся использовать один из этих коннекторов Ethereum для вызова смарт-контракта при запуске HTTP-запросом.

  1. Создайте новый ресурс приложения логики
  2. Выберите «Пустое приложение логики».
  3. Создание триггера запроса HTTP
  • Метод: ПОЛУЧИТЬ
  • Относительный путь: / адрес / {адрес}
  • Это позволяет нам использовать параметр пути для сбора адреса Ethereum пользователя для отправки NFT.

Затем для удобства инициализируем некоторые переменные (коннектор «Инициализировать переменную»).

4. Добавьте переменную для адреса вашего контракта.

  • Имя: contract_address
  • Тип: строка
  • Значение: ‹адрес вашего развернутого контракта›

5. Задайте metadata_url.

Каждый созданный NFT указывает на файл JSON метаданных, который описывает его характеристики (изображение, описание, свойства). У каждого NFT может быть свой URL-адрес метаданных. А пока установим для него статическое значение. Позже мы увидим, как их генерировать случайным образом.

6. Создайте token_id.

  • Имя: token_id
  • Тип: строка
  • Значение и выражение: rand (0,2147483647)

7. Создайте транзакцию Ethereum.

  • Найдите Ethereum и добавьте коннектор Выполнить функцию смарт-контракта (с оплатой за газ)
  • Настройте соединение (представьте это как строку подключения к базе данных). Предоставьте конечную точку RPC (для публичных сетей рекомендую Infura). Добавьте закрытый ключ из той же учетной записи, которую вы использовали для развертывания контракта - это предоставит нам возможность mint.
  • Установите следующий фрагмент в качестве контракта ABI. Обратите внимание, что мы добавляем ABI только для той функции, которую хотим вызвать.
[
  {
    "constant": false,
    "inputs": [
      {
        "name": "to",
        "type": "address"
      },
      {
        "name": "tokenId",
        "type": "uint256"
      },
      {
        "name": "tokenURI",
        "type": "string"
      }
    ],
    "name": "mintWithTokenURI",
    "outputs": [
      {
        "name": "",
        "type": "bool"
      }
    ],
    "payable": false,
    "stateMutability": "nonpayable",
    "type": "function"
  }
]
  • Заполните остальные параметры переменными, которые мы установили.

8. Установите ответ

  • Здесь я возвращаю ссылку на недавно созданный NFT в OpenSea в теле ответа.

9. Проверьте это! Перейдите к URL-адресу из соединителя запроса и замените {адрес} в пути своим адресом Ethereum.

Если вы застряли, вы можете сослаться на этот код приложения логики для сравнения.

Веб-прокси

В конечном итоге мы хотим, чтобы QR-код запускал это приложение логики, а затем перемещал пользователя к NFT в OpenSea для его просмотра. Для этого мы настроим простой веб-сайт в качестве прокси-сервера. Вот фрагмент HTML / JS, который захватит адрес web3 Ethereum и создаст запрос к конечной точке приложения Logic. Если ответ будет успешным, он перенаправит страницу на актив в OpenSea.



Создать QR

Затем мы просто генерируем QR-код, который указывает на наш сайт. QR-код должен быть отсканирован приложением, которое внедряет поставщика Web3. Пара телефонных приложений, поддерживающих Ethereum и QR-сканирование, - это Status, imToken и Opera.

Примечание. Статус требует, чтобы вы префикс URL-адреса QR с помощью https://get.status.im/browse/

Бонус

Вы можете написать простой сценарий для случайной генерации метаданных NFT, чтобы каждый NFT был уникальным. Мне показалось, что проще всего сгенерировать метаданные с помощью nodejs и загрузить метаданные в IPFS. Затем я беру каждый URL-адрес IPFS и сохраняю его в очереди хранилища Azure. Вместо того, чтобы извлекать URL-адрес метаданных из статической переменной, я удаляю сообщение из очереди и использую его для URL-адреса метаданных при вызове функции mintWithTokenURI.



Вы создали свой собственный QR-код NFT? Поделитесь этим в комментариях ниже!

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