Метаданные и выпуск NFT — блокчейн-разработка на Tezos

Содержание
  1. Кто такие блокчейн-программисты
  2. Blockchain-разработчик
  3. Разработчик децентрализованных приложений
  4. Языки для написания смарт-контрактов
  5. Solidity
  6. C++
  7. Java
  8. Python
  9. Ride
  10. Как написать первый смарт-контракт
  11. Учусь
  12. Разработка смарт-контрактов
  13. Дизайн NFT для смарт-контракта в сети
  14. Ончейн и оффчейн NFT
  15. Компиляция и развертывание в блокчейне
  16. Следующие шаги
  17. Проверка контракта в проводнике блокчейна
  18. Loot Royale NFT в тестовой сети Open sea
  19. ETH и ICO
  20. Как создать смарт-контракт в Эфириум
  21. Предварительные настройки
  22. Написание и компиляция кода
  23. Запуск сервера
  24. Развертывание смарт-контракта
  25. Настройка взаимодействий
  26. Тестирование
  27. Резюме
  28. Часто задаваемые вопросы
  29. Решения для разработки NFT
  30. Ethereum
  31. Binance Smart Chain (BSC)
  32. Polygon (ранее назывался Matic)
  33. Tron
  34. Примеры использования NFT
  35. Как найти компанию-разработчика NFT?
  36. Портфолио
  37. Отзывы клиентов
  38. Стоимость услуг
  39. Подход к разработке
  40. Навыки, технологический стек
  41. Заинтересованность
  42. Merehead — лучший поставщик NFT-решений
  43. Преимущества найма Merehead
  44. Как мы работаем (дорожная карта)
  45. Кейсы Merehead
  46. BigFan
  47. Coinbird/CEX
  48. Стоимость разработки NFT-проекта
  49. Prerequisites
  50. Setting up our local development environment
  51. Writing the Smart Contract
  52. Reserve NFTs function
  53. Setting Base Token URI
  54. Mint NFTs function
  55. Mint Single NFT function
  56. Getting all tokens owned by a particular account
  57. Withdraw balance function
  58. Deploying the contract locally
  59. Deploying the contract to Rinkeby
  60. Verifying our contract on Etherscan
  61. Вы владелец NFT
  62. Ваши права
  63. Факты об NFT
  64. Как создать NFT из фотографии
  65. Что делать, если кошелька Ethereum у вас еще нет?

Кто такие блокчейн-программисты

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

  • Банковской. Технология позволит создать устойчивую систему денежных переводов, автоматизировать часть предоставляемых клиентам услуг.
  • Строительной. Даст возможность вести автономную бухгалтерию, управлять проектами и цепочками поставок материалов.
  • Энергетической. Блокчейн-технология приведет к исчезновению посредников между производителями и потребителями. Появится возможность покупать электричество напрямую из электросети.
  • Страховой. Позволит людям получать прозрачные и надежные услуги. Можно автоматизировать выплаты при возникновении страхового случая.
  • Промышленной. Этот рынок имеет много элементов, механизмов, товаров, которые тяжело отследить. Блокчейн обеспечит контроль над производством и логистикой.
  • Образовательной. Технология обеспечит документооборот, позволит создать хранилища для обучающих материалов, приведет к исчезновению поддельных аттестатов и дипломов.

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

  • Разработчик блокчейн-сетей.
  • Программист децентрализованных приложений.

Blockchain-разработчик

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

  • Понимание работы децентрализованных систем.
  • Разработка и внедрение алгоритма достижения консенсуса.
  • Сотрудничество с другими IT-специалистами при создании архитектуры.
  • Аудит работы блокчейн-системы.

На 12 мая 2022 года было открыто более 850 вакансий. Зарплата программистов распределенных сетей в России начиналась от ₽240 тыс. (по данным HeadHunter). Однако в большинстве объявлений она не указывалась.

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

Разработчик децентрализованных приложений

DApps — программы на основе блокчейн-технологий. Их написанием занимаются создатели децентрализованных приложений, задействующие смарт-контракты. В обязанности этих программистов входят:

  • Знание блокчейна, на базе которого пишется смарт-контракт (например, Ethereum, Cardano, Solana, Near и других).
  • Работа с оракулами — программными поставщиками данных из реального мира в цифровой. Чаще применяется система Chainlink.
  • Обеспечение безопасности смарт-контрактов.
  • Знание языков программирования для их написания.
  • Понимание процесса запуска контрактов в децентрализованных системах.

В России на 12 мая 2022 года было представлено 50 вакансий для разработчиков смарт-контрактов (по данным с HeadHunter). Минимальная заработная плата составляла ₽75 тысяч. Однако большинство предложений были с окладом от $4000 до $14 000.

Объявления на HeadHunter
Вакансии на Solidity-разработку программ на базе Ethereum

Языки для написания смарт-контрактов

Для их разработки нужно уметь программировать. Для этого применяют разные языки. Часть из них были созданы специально для написания умных контрактов (например, Solidity для Ethereum). В таблице ниже — языки программирования и блокчейны, в которых они используются.

НазваниеДата созданияРедактор кодаБлокчейн-сети
Solidity2014 годRemixEthereum, Polkadot, Tron, Binance Smart Chain, Uniswap, Avalanche
C++1985 годVisual Studio, Xcode, Qt CreatorEOS, Solana, Ontology
Java1996 годNetBeans, IntelliJ IDEA, EclipseHyperledger, Raptoreum
Python1991 годEclipse, PyDev, Sublime TextEthereum, Ontology, Raptoreum
Ride2018 годWaves IDEWaves

Solidity

Это объектно-ориентированный и высокоуровневый язык программирования. Он был создан в 2014 году специально для написания умных контрактов на виртуальной машине Эфириум (EVM). Его делал Гэйвин Вуд — один из основателей проекта Ethereum. Solidity похож на язык JavaScript, что позволяет веб-разработчикам быстро его освоить. Для программирования на нем нужно использовать редактор кода (IDE) Remix.

C++

Считается сложным высокоуровневым типизированным языком общего назначения. Он используется для создания разных приложений. Его разработка ведется с 1985 года компанией Boost и продолжается по состоянию на май 2022-го. На C++ пишутся контракты для EOS, Solana и Ontology. Среди редакторов кода применяется Visual Studio от компании Microsoft.

Java

Язык был создан в 1996 году компанией Sun Microsystems. Он подобен C и C++, но среди программистов считается более простым. С 2010 года его разработкой занимается компания Oracle. Java — объектно-ориентированный язык кодирования общего назначения. Программисты его применяют для написания смарт-контрактов на блокчейнах Hyperledger и Raptoreum.

В 2020 году в отчете State of the Octoverse (занимается разработкой GitHub) Java занял 3-е место среди самых популярных языков программирования.

Python

Это язык кодирования общего назначения на основе скриптов, созданный в 1991 году. Он подходит для написания приложений на iOS, Android, а также компьютерных программ и другого софта. Python — высокоуровневый язык с динамической строгой типизацией. Также он сам управляет памятью. Это делает его легко читаемым и относительно простым для освоения. На Python пишутся умные контракты в блокчейн-сетях Ethereum и Ontology.

Ride

Этот язык был создан блокчейн-проектом Waves в июне 2018 года. Разработчики заявляют, что его преимущество заключается в легкости освоения. Это позволит избежать ошибок при написании смарт-контрактов на Waves. Также проект предлагает программистам их бесплатное тестирование (без газа). Язык Ride основан на выражениях, в нем нет циклов и рекурсий (самовызывающихся функций). Команда Waves называет его «ленивым».

Как написать первый смарт-контракт

На рынке труда востребованы Solidity-разработчики. Для создания контракта нужно полагаться на инструменты блокчейн-сети. Его написание будет вестись через платформу Remix. Она доступна онлайн и офлайн. Remix — набор инструментов, помогающих писать контракт на базе Эфириум. На платформе представлены такие разделы:

  • Для написания смарт-контракта. В этой форме пишется код на Solidity. Изучить язык можно по руководству на сайте Ethereum.
  • Для компиляции и отладки. Здесь программисты проверяют написанный код на ошибки. Инструменты Remix находят проблемные места и предлагают методы их исправления. Также компилятор позволяет на практике изучить работу функций смарт-контракта.
  • Для просмотра транзакций. Здесь отображаются операции, которые выполняет программа.

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

Solidity
Сценарий для развертывания смарт-контракта в блокчейне Ethereum

Учусь

До этого я пробовал разные вещи, такие как создание моего [собственного токена в тестовой сети Ethereum] (https://www.thecryptoinsight.com/2021/07/how-to-create-your-own-cryptocurrency-on-ethereum). .html) еще в июле 2021 года, когда я был новичком в сфере криптовалют и понимал такие мелочи, как использование [дерева merkle] (https://www.pranaybathini.com/2021/05/merkle-tree.html).

Именно в этот раз я узнал о remix IDE, кошельке MetaMask, различных тестовых сетях блокчейна Ethereum, развертывании смарт-контрактов через remix IDE. Я также узнал такие мелочи, как то, что мы можем развернуть тот же контракт, который был развернут на блокчейне Ethereum, на других блокчейнах, таких как Binance Smart Chain.

Я решил, что построить, но не знаю, как. Я начал изучать некоторые ресурсы с небольшими знаниями и нашел это [руководство по солидности] (https://cryptomarketpool.com/getting-started-with-solidity/) в сообщении Reddit.

Я изучил основы Solidity, чтобы понять код проверенных смарт-контрактов и разработать новые.

Разработка смарт-контрактов

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

Я знаю, что стандарт ERC-721 используется для создания NFT и стандарт ERC-20 для создания нашего собственного токена на блокчейне Ethereum, но не знаю, какие именно функции нам нужно определить в этих стандартах.

Я обратился к документам openzeppelin, чтобы узнать больше о функциях ERC-721. Итак, без дальнейших уроков, я перейду к разработке смарт-контрактов.

Чтобы разработать собственный смарт-контракт NFT, нам требуется

  • Принадлежность Смарт-контракт

  • Он используется для управления правом собственности на контракт. По умолчанию владельцем смарт-контракта является адрес, с которого он развернут.

  • Он имеет функции, которые позволяют передать право собственности на контракт на другой адрес, используя [transferOwnership(newOwner)](https://docs.openzeppelin.com/contracts/2.x/api/ownership#Ownable-transferOwnership-address-)метод.

  • Это позволяет вам отказаться от права собственности на контракт с помощью [renounceOwnership()](https://docs.openzeppelin.com/contracts/2.x/api/ownership#Ownable-renounceOwnership--)

  • Он предоставляет модификатор [onlyOwner()](https://docs.openzeppelin.com/contracts/2.x/api/ownership#Ownable-onlyOwner--), позволяющий выполнять некоторые функции единственным владельцем, например запуск продажа, приостановка действия контракта, раздача NFT из контракта.

  • Enumerable721 Смарт-контракт

  • Он расширяет [стандарты ERC721] (https://docs.openzeppelin.com/contracts/2.x/api/token/erc721), поэтому нам не нужен наш контракт для явного расширения контракта ERC721.

  • Это обеспечивает перечисление всех идентификаторов токенов в контракте, а также всех идентификаторов токенов, принадлежащих каждой учетной записи.

  • См. функции, предоставляемые [документацией] (https://docs.openzeppelin.com/contracts/4.x/api/token/erc721#ERC721Enumerable).

  • [ReentrancyGuard] (https://docs.openzeppelin.com/contracts/4.x/api/security#ReentrancyGuard) Смарт-контракт

  • Этот модуль помогает предотвратить повторные вызовы функции, что означает, что он делает доступным модификатор [nonReentrant](https://docs.openzeppelin.com/contracts/4.x/api/security#ReentrancyGuard-nonReentrant--), который может применяться к функциям, чтобы убедиться, что к ним нет вложенных (повторно входящих) вызовов.

  • Функции, помеченные как нереентерабельные, не могут вызывать друг друга.

  • Pausable Смарт-контракт

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

  • Это используется через наследование и делает модификаторы whenNotPaused

и whenPaused, которые можно применить к функциям вашего контракта.

Мы можем сделать так, чтобы наш основной смарт-контракт расширял эти смарт-контракты напрямую, импортируя их в наш код.

Код смарт-контракта Loot Royale Onchain NFT находится здесь — https://gist.github.com/pranaybathini/52f4ff2da4c3518855264febe7d95739.

Давайте обсудим функции внутри основного смарт-контракта — BattleRoyale.sol.

Важны три функции.

  • Функция, позволяющая пользователям чеканить токены NFT, заплатив необходимую сумму за чеканку NFT, которую они чеканят.

  • Функция для получения URI токена NFT. Это принимает идентификатор токена и дает JSON с NFT. В нашем случае это SVG-изображение, сгенерированное из кода On Chain. Никаких внешних вызовов не требуется.

  • Функция для получения суммы с адреса контракта на ваш собственный адрес или любой адрес, который вы хотите снять. Я написал функцию для вывода на адрес владельца смарт-контракта.

Дизайн NFT для смарт-контракта в сети

Вот как выглядит один из моих NFT.

Метаданные и выпуск NFT — блокчейн-разработка на Tezos

Простой дизайн HTML CSS внутри тега svg с изогнутой рамкой, а также отображает идентификатор токена вверху. Мне потребовалось некоторое время, чтобы понять, что мы можем включать html CSS внутри тега svg. Первоначально я взял код HTML CSS и использовал [этот сайт] (https://www.hiqpdf.com/demo/ConvertHtmlToSvg.aspx) для преобразования в SVG, но размер выходного svg очень большой.

Еще одна проблема, с которой я столкнулся при хранении этих данных для проектирования, заключалась в том, что максимальный размер смарт-контракта не может превышать 24576 байт. Итак, я переместил код в другой смарт-контракт, а затем в библиотеку, чтобы повторно использовать его в другом контракте. Это всего лишь одна строка, но потребовалось некоторое время, так как я сначала попытался ее оптимизировать, прежде чем понял, что могу перенести ее в другой контракт. Обучение++.

Вот ссылка на [SVG-код для вышеупомянутого NFT.] (https://gist.github.com/pranaybathini/d3875355c93e726899c5104cb388cb66?short_path=a38f07c)

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

Ончейн и оффчейн NFT

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

В случае вне сети мне нужно предоставить некоторые внешние URL-адреса, такие как https://somedomain.com, ipfs:// sha256hash/1.png.

В обоих случаях мне нужно вернуть выходной файл JSON в соответствии со [стандартом метаданных NFT.] (https://docs.metaplex.com/token-metadata/Versions/v1.0.0/nft-standard)

Пример URL-адреса изображения IPFS выглядит следующим образом:

ipfs://QmV3yGkzx2Uw3NHPZV9SAMLA58j7LvCFLFYtyfCMBAvstF/2.jpg

Вы можете открыть это прямо в храбром браузере — булавка, которую я нарисовал в мобильном приложении Art Flow давным-давно.

Если бы нам пришлось создавать NFT вне сети, как бы выглядел код?

Обратитесь к [этой ссылке github gist для смарт-контракта вне сети.] (https://gist.github.com/pranaybathini/dbb8c34dfbed1720f33960669342148b)

Я установлю IPFS или HTTPS BASE URI в контракте, когда начнется продажа, или в настоящее время разработчики раскрывают NFT после того, как все NFT будут отчеканены.

Просто написать функцию для установки переменной URI и вызвать ее после того, как все NFT будут отчеканены.

Есть две переменные

  • Базовый URI — фактический URI для NFT

  • Слепой URI — пока мы не раскроем NFT, это изображение или видео будет одинаковым для всех отчеканенных NFT.

URI, который мы должны установить, будет выглядеть так: ipfs://QmV3yGkzx2Uw3NHPZV9SAMLA58j7LvCFLFYtyfCMBAvstF/

Когда мы запрашиваем, наш идентификатор токена добавляется к нему, и Open Sea или любой другой рынок может найти и отобразить его.

Начальные шаги — активировать контракт, а затем установить слепой URI. Как только все NFT отчеканены, вы можете показать отчеканенные NFT.

Вывод метода tokenURI будет выглядеть так:

«`javascript

«image»: «ipfs://QmV3yGkzx2Uw3NHPZV9SAMLA58j7LvCFLFYtyfCMBAvstF/1.png»,

«name»: «Королевская добыча 1»,

«description» : «Некоторое описание»

Компиляция и развертывание в блокчейне

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

Давайте развернем этот сетевой смарт-контракт NFT в тестовой сети Ethereum Ropsten. Но перед этим нам нужно

  • Remix IDE — Вы можете использовать его онлайн. Просто нажмите https://remix.ethereum.org/. Если вы хотите запустить его в автономном режиме, вы можете обратиться к этому блогу о том, как загрузить его в докер и запустить.
Про NFT:  Максимизируйте свои инвестиции с помощью NFT-тройки: полезные советы и подсказки

  • Кошелек Metamask. Если у вас нет кошелька metamask, следуйте этому блогу, чтобы установить кошелек metamask в выбранном вами браузере. Если вы используете Brave, он встроен в браузер. Вы можете получить к нему доступ из своих настроек.

  • Получите немного эфира тестовой сети Ropsten / эфира тестовой сети Rinkeby / тестовой сети Polygon Matic, чтобы развернуть контракт в сети ropsten. Смените сеть на ropsten на метамаске.

  • https://faucet.ropsten.be/ — сборщик тестовой сети Ropsten

  • https://faucet.polygon.technology/ — сборщик тестовой сети Polygon

  • Если вы развернетесь в тестовой сети Rinkeby или полигональной тестовой сети, вы сможете увидеть свои NFT в тестовой сети OpenSea. Следующие шаги одинаковы для всех сетей.

Следующие шаги

  • Скопируйте контракт в вашу IDE для ремикса. Это должно выглядеть так, как показано ниже.

Метаданные и выпуск NFT — блокчейн-разработка на Tezos

  • Вы можете выбрать версию компилятора на любую версию выше 8.0, но помните эту версию, которую вы использовали для компиляции. Это необходимо при проверке контракта в обозревателе блоков.

  • Если вы не знаете, что такое обозреватель блоков, обратитесь к этому блогу, чтобы разобраться в деталях.

  • Перейдите на вкладку компилятора и нажмите «Компилировать». Вы должны увидеть зеленую галочку, как показано ниже.

Метаданные и выпуск NFT — блокчейн-разработка на Tezos

  • Перейдите на вкладку развертывания. Вы должны выбрать контракт как BattleRoyale.sol

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

Метаданные и выпуск NFT — блокчейн-разработка на Tezos

  • Вам необходимо выбрать Injected Web3 в качестве среды, которая позволит нам внедрить метамаску и выполнить развертывание в сети, выбранной в метамаске. Вы должны увидеть свою учетную запись метамаски и баланс в разделе учетных записей.

  • Когда вы нажмете «Развернуть», вам будет предложено дважды. Сначала развертывается библиотека CardDesign, а затем наш смарт-контракт.

  • Вы получите два уведомления о метамасках после развертывания контрактов. Нажмите на них, и вы будете перенаправлены в обозреватель блоков Ropsten. Вы также можете просмотреть транзакции на вкладке активности в метамаске.

  • Поздравляем, теперь запущен смарт-контракт On-chain NFT — loot royale.

Но как мы с ним взаимодействуем? Позже я подробно объясню, как взаимодействовать с ним из нашего пользовательского интерфейса реагирования. Давайте посмотрим, как взаимодействовать с контрактом из обозревателя блоков.

К вашему сведению, обозреватель блоков также является децентрализованным приложением.

Проверка контракта в проводнике блокчейна

Теперь давайте проверим контракт в проводнике блокчейна и взаимодействуем с ним из самого проводника.

  • Откройте адреса контрактов библиотеки дизайна карт на одной вкладке (нам нужен этот адрес). Откройте адрес контракта Loot Royale на другой вкладке, как показано ниже.

Метаданные и выпуск NFT — блокчейн-разработка на Tezos

  • Нажмите «Подтвердить» и «Опубликовать» и заполните данные ниже. Я использовал 8.7 в качестве версии компилятора при развертывании из ремикса, поэтому я использую то же самое здесь. Нажмите «Продолжить».

Метаданные и выпуск NFT — блокчейн-разработка на Tezos

  • Скопируйте код из remix IDE и вставьте часть кода. Удалите строку из части конструктора, как показано ниже.

Метаданные и выпуск NFT — блокчейн-разработка на Tezos

  • Введите адрес библиотеки, как показано ниже, и подтвердите, что вы не робот, и нажмите «Подтвердить и опубликовать».

Метаданные и выпуск NFT — блокчейн-разработка на Tezos

Теперь наш контракт проверен. Это выглядит как на изображении ниже. Вы должны увидеть функции для чтения и записи в блокчейн.

Метаданные и выпуск NFT — блокчейн-разработка на Tezos

Перейдите в раздел записи контракта и нажмите «Подключиться к web3», вам будет предложено подключиться к провайдеру, как показано ниже.

Метаданные и выпуск NFT — блокчейн-разработка на Tezos

Нажмите на Metamask, он предложит вам подключиться. Нажмите «Подключиться к web3» еще раз, и вы сможете подключить проводник к Metamask, как показано ниже.

Метаданные и выпуск NFT — блокчейн-разработка на Tezos

Теперь нажмите на функцию mintSingle, это будет NFT. Введите 0,01 в качестве цены NFT, как показано ниже.

Метаданные и выпуск NFT — блокчейн-разработка на Tezos

Поздравляем. Вы успешно выпустили NFT. Теперь давайте просмотрим URI токена.

Метаданные и выпуск NFT — блокчейн-разработка на Tezos

Вы можете перейти на testnets.opensea.io, подключить свой кошелек, и вы сможете увидеть свои NFT Loot Royale.

Loot Royale NFT в тестовой сети Open sea

Метаданные и выпуск NFT — блокчейн-разработка на Tezos

В следующем блоге я покажу, как спроектировать внешний интерфейс для lootroyale.xyz, чтобы чеканить NFT в рояле добычи, поскольку этот блог уже стал длинным.

Любая обратная связь приветствуется. В случае каких-либо сомнений или проблем или любых новых идей, пишите мне в Твиттере — @pranay_bathini. Давайте учиться вместе.

Спасибо за прочтение!!

Эта статья также была опубликована [здесь] (https://medium.com/@pranaybathini/creating-an-loot-royale-nft-collection-dapp-e9b5e43452c6)


Оригинал

ETH и ICO

Умные программы Ethereum получили огромную популярность благодаря их массовому использованию для инвестирования в стартапы. В 2017-2018 годах ICO привлекло около $14 млрд. Большинство токенов были созданы и запущены на платформе Эфириум. В январе 2017 курс ETH составлял $8, а уже в июне цена монеты достигла $360. В начале 2018 года Ethereum стоил $1360.

График Ethereum
Курс ETH в динамике 2016-2021 годов

Стандартная схема проведения краудфандинга (коллективного финансирования) такова:

  1. Разработчики генерируют идею, для реализации которой требуются деньги.
  2. Проект запускает ICO, принимая от инвесторов эфириумы, а взамен выдавая токены.

Сбор средств ограничен во времени, что создает ажиотаж среди вкладчиков. На пике популярности ICO суммы в $10-20 млн удавалось привлечь в течение нескольких минут или дней. В ходе токенсейла разработчики собрали $35 млн за 24 секунды. Чтобы попасть в число участников, инвесторы платили до $6600 за транзакцию.

Смарт-контракты полностью автоматизировали ICO. Программа сама запоминала, от кого и сколько пришло денег, начисляла токены и позволяла участникам передавать или продавать жетоны. Благодаря прозрачности блокчейна инвесторы видели, сколько всего было выпущено монет и как они были распределены.

ПроектДата проведения ICO, годыСумма сборов, $
EOS2017-20184,1 млрд
Tezos2017150 млн
Bancor2017140 млн
Status2017100 млн
Brave201773 млн

Как создать смарт-контракт в Эфириум

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

  1. Открытие кошелька в MetaMask (или любом другом, поддерживающем блокчейн Ethereum).
  2. Выбор тестовой сети.
  3. Написание и компиляция кода.
  4. Запуск и тестирование программы.
Криптовалютный кошелек
Официальный сайт MetaMask

Предварительные настройки

Необходимым условием для написания кода является подготовка среды разработки. Сначала нужно установить инструменты для создания приватного блокчейна:

  1. Загрузить Ganache — отдельную тестовую сеть Ethereum.
  2. Установить браузерное расширение MetaMask.

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

Читайте также


История Ethereum

Эфириум (Ethereum) входит в топ популярных криптовалют — в августе 2021 года он занимает второе…

Написание и компиляция кода

Работа с программой ведется на сайте remix.ethereum.org. Это удобная площадка для развертывания контрактов и взаимодействия с ними всех пользователей Эфириум. Участники сделки могут переключаться между учетными записями и вызывать любые функции программы.

Онлайн-редактор Remix содержит компилятор кода для языка Solidity. Это инструмент для преобразования исходного шифра в машинный, который понимает компьютер. При первом посещении страницы сервис загружает пример кода, его можно безболезненно удалить и заменить программой контракта. Компилятор сначала считывает исходный шифр, а затем начинает построчно обрабатывать его, переводя в инструкцию для виртуальной машины Ethereum (EVM).

Запуск сервера

Дальнейшая работа переходит в Ganache. Сервис проверяет новый блокчейн и стыкует его с заранее созданной копией кошелька. Порядок действий разработчика следующий:

  1. Разархивировать сохраненную ранее zip-папку MetaMask.
  2. Открыть файл index.html.
  3. В правом верхнем углу сайта изменить Network ETH на Add Custom Network/Node.
  4. В открывшееся окно вставить данные про RPC Server, предоставленные Ganache. Имя узла можно выбрать самостоятельно.

С этого момента локальная копия MetaMask подключена к тестовому серверу.

Инструмент для создания локальной сети Ethereum
Тестирование блокчейна на Ganache

Развертывание смарт-контракта

Как только узел запущен, нужно подключить Remix к RPC-адресу и загрузить цифровой контракт. Алгоритм действий такой:

  1. Открыть аккаунт в MetaMask.
  2. В верхней навигационной панели нажать Contracts, выбрать Deploy.
  3. В открывшемся окне вставить байт-код программы из Remix IDE. Параметр Gas Limit определяется автоматически.
  4. Импортировать аккаунт для загрузки программы, нажав на кнопку внизу страницы.
  5. Выбрать 1 из 10 адресов, выданных Ganache для взаимодействия с контрактом. Для этого нужно нажать на иконку рядом с номером кошелька.
  6. Копировать приватный ключ и вставить его в открывшемся окне.
  7. Нажать Unlock, подтвердить транзакцию.

Проверить обработку блоков можно в разделе Current Blocks сервера Ganache: показатель изменится с 0 на 1. Теперь цифровой договор загружен в локальный блокчейн. После успешного завершения операции адрес кошелька будет виден в правой части экрана Remix. Сначала токены будут храниться в кошельке создателя программы. Чтобы проверить баланс эфиров, нужно перейти в окно MetaMask, выбрать «Добавить токены», ввести адрес контракта и нажать «ОК».

Загрузка ... Загрузка …

Настройка взаимодействий

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

  1. В аккаунте MetaMask выбрать Interact With Contract.
  2. В поле Contract Address вставить данные из Ganache (раздел Transactions).
  3. В строку ABI добавить соответствующую информацию из Remix (Details).
  4. Нажать Access.

Если все сделано правильно, на экране появится раздел Read/Write Contract, в котором можно выбрать функции, записанные в контракте.

Тестирование

Перед запуском программы ее нужно проверить. Даже незначительная ошибка в цифровом договоре может привести к последствиям. Тестируются отдельные механизмы смарт-контракта:

  • Электронная подпись.
  • Условия выполнения обязательств.
  • Отправка сообщений.
  • Код и фиксация его изменений.
  • Инструменты, необходимые для выполнения договора.

Для этого нужно смоделировать условия, записанные в программе. Например, для проверки функции инкремента (совершения транзакции) разработчик переходит в раздел Read/Write Contract и нажимает Write, соглашаясь с операцией. При новом запросе getCount появляется 1 вместо 0 и увеличивается число сделок в Ganache. Аналогично можно протестировать другие функции.

Резюме

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

Часто задаваемые вопросы

Это децентрализованная виртуальная машина Ethereum, которая обрабатывает скрипты с использованием общедоступных узлов. EVM работает изолированно от основной сети и является удобной средой для тестирования новых продуктов.

Truffle Framework — популярный фреймворк от Ethereum. Это платформа с открытым исходным кодом для быстрой разработки децентрализованных приложений и управления жизненным циклом смарт-контрактов.

👛 Какие кошельки можно использовать для создания персонального блокчейна?

Официальные приложения Ethereum — MetaMask и MyEtherWallet.

👩‍💻 На каких языках пишут смарт-контракты?

Для создания программ на Эфириум чаще всего используется универсальный язык Solidity. Смарт-договоры также можно писать на C++ (EOS, XRP), JavaScript (LISK).

🛡 Чем обеспечена безопасность цифровых контрактов?

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


Решения для разработки NFT

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

Ethereum

Децентрализованная платформа для запуска токенов и DApps, на базе которой создается большинство как взаимозаменяемых, так и невзаимозаменяемых токенов. Благодаря большому количеству пользователей и постоянным апгрейдам, эта сеть блокчейна считается самой безопасной для запуска блокчейн-проектов, однако у нее есть существенный минус — очень высокая стоимость транзакций.

К преимуществам запуска NFT на Ethereum можно отнести:

  • ERC-721, ERC-1155 и другие NFT-стандарты Ethereum поддерживают большинство бирж, платформ, кошельков и DeFi-проектов. При этом связь обеспечивается как на коммерческом, так и на технологическом уровне.
  • С Ethereum знакомы большинство разработчиков, поэтому будет довольно легко найти компанию-разработчика для запуска своего NFT-решения.
  • Ethereum — вторая по популярности блокчейн-сеть (после Биткоина). У нее очень много нод, активных пользований и большое сообщество.

Binance Smart Chain (BSC)

Блокчейн-платформа для запуска токенов, смарт-контрактов и DApps от Binance. Разработчики NFT предпочитают BSC за ее скорость, низкие комиссии и совместимость с Ethereum Virtual Machine (EVM). Кроме того, у BSC простой интерфейс, быстро растущая аудитория и отличная команда разработчиков.

Преимущества разработки NFT-решений на BSC:

  • BSC совместим с большинством смарт-контрактов и DApps на Ethereum.
  • CipherTrace для отслеживания VASP, OTC и источников мошенничества.
  • Возможность создания децентрализованной автономной организации.
  • Подтверждение нового блока в течение трех секунд.
  • Поддержка межцепочечной передачи данных.

Polygon (ранее назывался Matic)

Один их первых блокчейн-проектов, прошедших IEO на Binance Launchpad. Платформа представляет собой Ethereum-совместимый сайдчейн второго уровня, работающий по алгоритму консенсуса PoS. По сути, это более быстрая, дешевая и масштабируемая версия Ethereum.

Преимущества запуска NFT-проектов на Polygon:

  • Платформа совместима с Ethereum.
  • Широкие возможности настройки для NFT.
  • Высокая скорость, низкие комиссии.

Tron

Еще одно децентрализованное решение для разработки NFT-проектов, главная особенность которого — набор стандартных интерфейсов для выпуска NFT с полной совместимостью с ERC-721 сети Ethereum. Кроме того, Tron используют трехуровневую архитектуру для повышения стабильности и безопасности сети.

Преимущества запуска NFT-решений на Tron:

  • Более низкая комиссия, чем у Ethereum.
  • Высокие скорость транзакции и пропускная способность.
  • Можно использовать стейблкоины для защиты от волатильности.
  • Совместимость стандартов Tron со стандартами Ethereum.
  • Улучшенная система метаданных.

Примеры использования NFT

Спорт. Технология NFT предоставляет спортсменам и командам массу возможностей для более тесного взаимодействия с фанатами и монетизации своей популярности. Прочесть об этом можно в статье: «NFT в индустрии спорта».

Искусство. Это, пожалуй, самый известный и распространенный способ использования невзаимозаменяемых токенов. Художники используют их, чтобы токенизировать свои произведения искусства и торговать на NFT-платформах, не беспокоясь о копировании контента и проблемах с авторскими правами. Больше информации об этом в статье: «Как NFT может изменить арт-индустрию».

Недвижимость. В этой отрасли NFT используются для токенизации как реальных, так и виртуальных объектов недвижимости и размещения их на открытом рынке. Это повышает ликвидность рынка и снижает входной барьер для инвесторов.

Про NFT:  На полигоне нфт площадка

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

Билеты на мероприятия. Невзаимозаменяемые токены — это отличный инструмент для продажи билетов на различные офлайн- и онлайн-мероприятия, так как они могут устранить проблемы отрасли: скальпинг, фальшивые билеты, высокие издержки. Больше в статье: «Как NFT изменит индустрии продажи билетов».

Управление лицензиями на ПО. NFT также может помочь в управлении лицензиями на программное обеспечение. Каждой такой лицензии можно присвоить свой NFT, который подписывается и удостоверяется ее владельцем. Затем эти NFT можно будет покупать-продавать как обычные лицензионные коды, но в случае с невзаимозаменяемыми токенами можно почти полностью устранить пиратство, особенно если речь идет о ПО-сервисах вроде лицензии на Adobe Photoshop.

Видеоигры. Здесь NFT может помочь повысить безопасность сделок с игровыми предметами (игровая одежда, оружие, маунты, скины, аватары и прочее), обеспечив стопроцентное доказательство их подлинности. Кроме того, с помощью NFT можно создать систему для переноса персонажей и айтемов из одной игры, в частности, из World of Warcraft в другую, например, New World (от Amazon Games).

Музыка. Как и в случае с произведениями искусства, музыканты могут токенизировать свои творения и продавать их на рынке посредством NFT. Таким образом, можно устранить проблему с пиратством и улучшить рынок донатов.

Как найти компанию-разработчика NFT?

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

Портфолио

Первым делом нужно посмотреть на перечень кейсов кандидата — компании-разработчика NFT. Вы должны понять, есть ли у кандидата опыт создания NFT-проектов и какой именно это опыт. Кроме того, также важно понять, работала ли компания в нужном направлении. Например, если вы ищете компанию-разработчика для запуска NFT-маркетплейса, то вам нужна команда, у которой в портфолио уже есть кейсы по реализации платформы для чеканки и продажи NFT.

Отзывы клиентов

Дальше нужно проверить, что о кандидатах говорят их клиенты. Обычно отзывы от клиентов можно найти на Clutch.co, Goodfirms.co или LinkedIn. Важно, чтобы отзывы были развернутыми, конкретными и не были анонимными (должны быть указаны имя, фамилия, компания и должность).

отзыв о Merehead

Стоимость услуг

В идеальном мире стоимость создания программного обеспечения зависит от навыков команды разработчиков, ее опыта и кейсов в портфолио. Но в реальном мире стоимость разработки больше всего зависит от местоположения разработчика. Так, средняя почасовая ставка разработчика из США — $95/час, Западной Европы — $67/час, Восточной Европы — $32/час.

И, что любопытно, несмотря на столь большую разницу в оплате труда, уровень профессионализма специалиста из США и, например, из Украины или Польши, по сути, одинаков. Этим часто пользуются Microsoft, Apple, IBM и другие IT-гиганты, отдавая часть разработки на аутсорсинг в более «дешевые» страны.

Подход к разработке

На сегодня стандартом является Agile. Под данным термином подразумевает подход к разработке, соответствующий Agile Manifesto. К примеру, в компании Merehead команда разработчиков NFT пользуется Scrum-подходом (или Scrum of scrums) — это масштабируемый вариант Agile, который позволяет без раздувания бюджета и сроков получить программный продукт, максимально соответствующий ожиданиям пользователей.

Как происходит разработка программного обеспечения

Как происходит разработка программного обеспечения.

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

Заинтересованность

Также очень важно, насколько компания-разработчик NFT прониклась идеей проекта, узнала бэкграунд, проанализировала нишу и целевую аудиторию. Обратите внимание, насколько много вопросов задает кандидат и о чем эти вопросы: касаются ли они проекта и его реализации или же кандидата больше интересует, сколько вы заплатите и как быстро вы можете подписать договор.

Merehead — лучший поставщик NFT-решений

Будучи ведущей компанией по разработке решений в области блокчейна и децентрализованных финансов — от простых смарт-контрактов до крупных децентрализованных бирж, Merehead предлагает обширную технологическую поддержку для реализации NFT-решений в сфере искусства, спорта, видеоигр, маркетинга, e-commerce, финансов, страхования и здравоохранения.

Merehead

Преимущества найма Merehead

Надежность и безопасность — все наши NFT-решения обладают высокой степенью защиты от несанкционированного доступа, злонамеренных действий, мошенничества и утечки данных.

Экономическая эффективность — мы предлагаем конкурентоспособные цены, которые помогут вам запустить собственное NFT-решение без переплат и необоснованных выплат.

Экспертиза в блокчейне и NFT — наша команда разработчиков обладает глубокими знаниями о Blockchain, FinTech и NFT, что позволит вам реализовать любую идею: смарт-контракт, кошелек, маркетплейс, CEX/DEX, мобильное приложение.

Поддержка — после запуска Мы заинтересованы в успехе своих клиентов, поэтому мы готовы обеспечить обучение, послерелизную поддержку, а также оценку KPI.

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

Как мы работаем (дорожная карта)

Определение цели. Анализ бизнес-целей и задач проекта, изучение целевой ниши и аудитории, определение технических требований и требований к дизайну, оценка затрат и усилий, планирование процесса.

UI/UX-дизайн. Разработка пользовательских потоков, информационной структуры, каркасов и прототипов. Создание фирменного стиля бренда.

Разработка. Создание программного кода будущего проекта с нуля, обновление, расширение и рефакторинг существующих проектов.

Тестирование. Отладка и обеспечение качества созданного продукта. Тестирование юзабилити, производительности, безопасности и функциональности.

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

Поддержка продукта. Обучение персонала, предоставление технической поддержки и устранение неполадок, мониторинг и обслуживание систем и приложений.

Кейсы Merehead

Наша опытная команда разработчиков поможет вам разработать любое NFT-решение для вашего бизнеса. В основном мы работаем с Ethereum, Binance Smart Chain, Polkadot, Polygon, Tron и другими популярными блокчейн-платформами.Вот краткое описание наших последних проектов:

BigFan

Открытый рынок для продажи уникальных коллекционных NFTs на спортивную тематику. Все NFT на платформе производятся в сотрудничестве с клубами, командами, организациями и игроками из разных уголков мира.

Coinbird/CEX

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

Стоимость разработки NFT-проекта

Выше мы уже писали, что стоимость разработки NFT-решений сильно зависит от местоположения технического партнера. Второй важный фактор — это сложность проекта: функционал, дизайн, технологический стек, глубина проработки, внешние интеграции. Например, на создание NFT-кошелька нужно 700-750 часов разработки, что в страны технического партнера может стоить 25 тысяч (Восточная Европа), 50 тысяч (Западная Европа) или 70 тысяч (США, Канада, Великобритания). Вот более детальное описание стоимости создания NFT-кошелька:

стоимость разработки NFT-решений

Разработка NFT-маркетплейса будет стоить дорожа, так как это более сложное программное обеспечение. Обычно на реализацию такого проекта уходит от 1000 часов разработки, что будет стоить $ 35 000 (Восточная Европа), $70 000 (Западная Европа) или $ 100 000 (США, Канада, Великобритания).

стоимость создания nft маркетплейса

Prerequisites

Метаданные и выпуск NFT — блокчейн-разработка на Tezos

  1. Intermediate knowledge of JavaScript.
    (In case you need a refresher, I’d suggest this YouTube tutorial)
  2. Intermediate knowledge of Solidity and OpenZeppelin Contracts
    (We will be releasing tutorials on this very soon! For the time being, we strongly recommend CryptoZombies and Buildspace)
  3. NodeJS and npm installed on your local computer
    (You can download the latest version here)
  4. A collection of media files and NFT metadata JSON uploaded to IPFS.
    (In case you don’t have this, we have created a toy collection for you to experiment with. You can find the media files here and the JSON metadata files here).

While it may be possible for readers who do not satisfy the prerequisites to follow along and even deploy a smart contract, we strongly recommend getting a developer who knows what s/he is doing if you’re serious about your project. Smart contract development and deployment can be incredibly expensive and unforgiving wrt security flaws and bugs.

Setting up our local development environment

Метаданные и выпуск NFT — блокчейн-разработка на Tezos

Hardhat, an Ethereum Development Environment

We will be using Hardhat, an industry-standard ethereum development environment, to develop, deploy, and verify our smart contracts. Create an empty folder for our project and initialize an empty package.json file by running the following command in your Terminal:

mkdir nft-collectible && cd nft-collectible && npm init -y

You should now be inside the nft-collectible folder and have a file named package.json .

Next, let’s install Hardhat. Run the following command:

npm install --save-dev hardhat

We can now create a sample Hardhat project by running the following command and choosing Create a basic sample project.

Метаданные и выпуск NFT — блокчейн-разработка на Tezos

Agree to all the defaults (project root, adding a .gitignore, and installing all sample project dependencies).

Let’s check that our sample project has been installed properly. Run the following command:

npx hardhat run scripts/sample-script.js

If all goes well, you should see output that looks something like this:

Метаданные и выпуск NFT — блокчейн-разработка на Tezos

We now have our hardhat development environment successfully configured. Let us now install the OpenZeppelin contracts package. This will give us access to the ERC721 contracts (the standard for NFTs) as well as a few helper libraries that we will encounter later.

If we want to share our project’s code publicly (on a website like GitHub), we wouldn’t want to share sensitive information like our private key, our Etherscan API key, or our Alchemy URL (don’t worry if some of these words don’t make sense to you yet). Therefore, let us install another library called dotenv.

npm install dotenv

Congratulations! We are now in a good place to start developing our smart contract.

Writing the Smart Contract

Метаданные и выпуск NFT — блокчейн-разработка на Tezos

In this section, we are going to write a smart contract in Solidity that allows anyone to mint a certain number of NFTs by paying the required amount of ether + gas.

In the contracts folder of your project, create a new file called NFTCollectible.sol.

We will be using Solidity v8.0. Our contract will inherit from OpenZeppelin’s ERC721Enumerable and Ownable contracts. The former has a default implementation of the ERC721 (NFT) standard in addition to a few helper functions that are useful when dealing with NFT collections. The latter allows us to add administrative privileges to certain aspects of our contract.

In addition to the above, we will also use OpenZeppelin’s SafeMath and Counters libraries to safely deal with unsigned integer arithmetic (by preventing overflows) and token IDs respectively.

This is what the skeleton of our contract looks like:

//SPDX-License-Identifier: MITpragma solidity ^0.8.0;

Reserve NFTs function

As the creator of the project, you probably want to reserve a few NFTs of the collection for yourself, your team, and for events like giveaways.

Let’s write a function that allows us to mint a certain number of NFTs (in this case, ten) for free. Since anyone calling this function only has to pay gas, we will obviously mark it as onlyOwner so that only the owner of the contract will be able to call it.

require( totalMinted.add(10) < MAX_SUPPLY, "Not enough NFTs" );

We check the total number of NFTs minted so far by calling tokenIds.current(). We then check if there are enough NFTs left in the collection for us to reserve. If yes, we proceed to mint 10 NFTs by calling _mintSingleNFT ten times.

It is in the _mintSingleNFT function that the real magic happens. We will look into this a little later.

Setting Base Token URI

Our NFT JSON metadata is available at this IPFS URL: ipfs://QmZbWNKJPAjxXuNFSEaksCJVd1M6DaKQViJBYPK2BdpDEP/

When we set this as the base URI, OpenZeppelin’s implementation automatically deduces the URI for each token. It assumes that token 1’s metadata will be available at ipfs://QmZbWNKJPAjxXuNFSEaksCJVd1M6DaKQViJBYPK2BdpDEP/1, token 2’s metadata will be available at ipfs://QmZbWNKJPAjxXuNFSEaksCJVd1M6DaKQViJBYPK2BdpDEP/2 , and so on.

(Please note that there is no .json extension to these files)

However, we need to tell our contract that the baseTokenURI variable that we defined is the base URI that the contract must use. To do this, we override an empty function called _baseURI() and make it return baseTokenURI.

We also write an only owner function that allows us to change the baseTokenURI even after the contract has been deployed.

Mint NFTs function

Let us now turn our attention to the main mint NFTs function. Our users and customers will call this function when they want to purchase and mint NFTs from our collection.

Since they’re sending ether to this function, we have to mark it as payable.

We need to make three checks before we allow the mint to take place:

  1. There are enough NFTs left in the collection for the caller to mint the requested amount.
  2. The caller has requested to mint more than 0 and less than the maximum number of NFTs allowed per transaction.
  3. The caller has sent enough ether to mint the requested number of NFTs.
require( totalMinted.add(_count) <= MAX_SUPPLY, "Not enough NFTs!" );require( _count > 0 && _count <= MAX_PER_MINT, "Cannot mint specified number of NFTs." );require( msg.value >= PRICE.mul(_count), "Not enough ether to purchase NFTs." );

Mint Single NFT function

Let’s finally take a look at the private _mintSingleNFT() function that’s being called whenever we (or a third party) want to mint an NFT.

This is what is happening:

  1. We get the current ID that hasn’t been minted yet.
  2. We use the _safeMint() function already defined by OpenZeppelin to assign the NFT ID to the account that called the function.
  3. We increment the token IDs counter by 1.
Про NFT:  Самый дорогой товар на сайте NFT

The token ID is 0 before any mint has taken place.

When this function is called for the first time, newTokenID is 0. Calling safeMint() assigns NFT with ID 0 to the person who called the contract function. The counter is then incremented to 1.

The next time this function is called, _newTokenID has value 1. Calling safeMint() assigns NFT with ID 1 to the person who… I think you get the gist.

Note that we don’t need to explicitly set the metadata for each NFT. Setting the base URI ensures that each NFT gets the correct metadata (stored in IPFS) assigned automatically.

Getting all tokens owned by a particular account

If you plan on giving any sort of utility to your NFT holders, you would want to know which NFTs from your collection each user holds.

Let’s write a simple function that returns all IDs owned by a particular holder. This is made super simple by ERC721Enumerable ‘s balanceOf and tokenOfOwnerByIndex functions. The former tells us how many tokens a particular owner holds, and the latter can be used to get all the IDs that an owner owns.

Withdraw balance function

All the effort we’ve put in so far would go to waste if we are not able to withdraw the ether that has been sent to the contract.

Let us write a function that allows us to withdraw the contract’s entire balance. This will obviously be marked as onlyOwner.

Deploying the contract locally

Let us now make preparations to deploy our contract to the Rinkeby test network by simulating it in a local environment.

In the scripts folder, create a new file called run.js and add the following code:

This is some Javascript code that utilizes the ethers.js library to deploy our contract, and then call functions of the contract once it has been deployed.

Here is the series of what’s going on:

  1. We get the address of the deployer/owner (us)
  2. We get the contract that we want to deploy.
  3. We send a request for the contract to be deployed and wait for a miner to pick this request and add it to the blockchain.
  4. Once mined, we get the contract address.
  5. We then call public functions of our contract. We reserve 10 NFTs, mint 3 NFTs by sending 0.03 ETH to the contract, and check the NFTs owned by us. Note that the first two calls require gas (because they’re writing to the blockchain) whereas the third simply reads from the blockchain.

Let’s give this a run locally.

npx hardhat run scripts/run.js

If all goes well, you should see something like this:

Метаданные и выпуск NFT — блокчейн-разработка на Tezos

Deploying the contract to Rinkeby

To deploy our contract to Rinkeby, we will need to set up a few things.

First, we will need an RPC URL that will allow us to broadcast our contract creation transaction. We will use Alchemy for this. Create an Alchemy account here and then proceed to create a free app.

Метаданные и выпуск NFT — блокчейн-разработка на Tezos

Make sure that the network is set to Rinkeby.

Once you’ve created an app, go to your Alchemy dashboard and select your app. This will open a new window with a View Key button on the top right. Click on that and select the HTTP URL.

Acquire some fake Rinkeby ETH from the faucet here. For our use case, 0.5 ETH should be more than enough. Once you’ve acquired this ETH, open your Metamask extension and get the private key for the wallet containing the fake ETH (you can do this by going into Account Details in the 3-dots menu near the top-right).

Do not share your URL and private key publicly.

We will use the dotenv library to store the aforementioned variables as environment variables and will not commit them to our repository.

Create a new file called .env and store your URL and private key in the following format:

API_URL = "<--YOUR ALCHEMY URL HERE-->"PRIVATE_KEY = "<--YOUR PRIVATE KEY HERE-->"

Now, replace your hardhat.config.js file with the following contents.

We’re almost there! Run the following command:

npx hardhat run scripts/run.js --network rinkeby

This should give you output very similar to what you got earlier, except that this has been deployed to the real blockchain.

Make a note of the contract address. Ours was 0x355638a4eCcb777794257f22f50c289d4189F245.

You can check this contract out on Etherscan. Go to Etherscan and type in the contract address. You should see something like this.

Метаданные и выпуск NFT — блокчейн-разработка на Tezos

Verifying our contract on Etherscan

We have come a LONG way in this article but there is one final thing we’d like to do before we go.

Let’s verify our contract on etherscan. This will allow your users to see your contract’s code and ensure that there is no funny business going on. More importantly, verifying your code will allow your users to connect their Metamask wallet to etherscan and mint your NFTs from etherscan itself!

Before we can do this, we will need an Etherscan API key. Sign up for a free account here and access your API keys here.

Let’s add this API key to our .env file.

ETHERSCAN_API = "<--YOUR ETHERSCAN API KEY-->"

Hardhat makes it really simple to verify our contract on Etherscan. Let’s install the following package:

Next, make adjustments to hardhat.config.js so it looks like this:

Now, run the following two commands:

npx hardhat cleannpx hardhat verify --network rinkeby DEPLOYED_CONTRACT_ADDRESS "BASE_TOKEN_URI"

In our case, the second command looked like this:

npx hardhat verify --network rinkeby 0x355638a4eCcb777794257f22f50c289d4189F245 "ipfs://QmZbWNKJPAjxXuNFSEaksCJVd1M6DaKQViJBYPK2BdpDEP/"

Метаданные и выпуск NFT — блокчейн-разработка на Tezos

Now, if you visit your contract’s Rinkeby Etherscan page, you should see a small green tick next to the Contract tab. More importantly, your users will now be able to connect to web3 using Metamask and call your contract’s functions from Etherscan itself!

Метаданные и выпуск NFT — блокчейн-разработка на Tezos

Try this out yourself.

Connect the account that you used to deploy the contract and call the withdraw function from etherscan. You should be able to transfer the 0.03 ETH in the contract to your wallet. Also, ask one of your friends to connect their wallet and mint a few NFTs by calling the mintNFTs function.

Вы владелец NFT

Чтобы было понятно, как это применимо в реальной жизни, представим, что вы решили завести свой блог в Twitter. Вот ваш первый Твит:

Вы активно продвигаете его через другие каналы, наполняете его интересными постами, шутками, фотографиями.

Проходит 3 года и вы уже инфлюенсер. К вашему мнению прислушиваются миллионы пользователей. Вас приглашают на интервью.

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

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

Фанаты по всему миру перед сном посматривают ваш блог в Твиттере. Ваши регулярные твиты — признак стабильности в digital и во всем мире.

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

Пожизненный кредит на дом — не лучшая перспектива.

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

Так как вы никогда не сталкивались с криптовалютой и криптокошелька у вас нет, вы создаете кошелек Metamask (Coinbase, Bitski или др.). В этом видео можно узнать, как работает Metamask.

Чтобы начать его использование, вы устанавливаете расширение для браузера.

Сайт русифицирован и процесс регистрации довольно быстрый и простой. Но стоит уделить должное внимание фразе восстановления. Фраза восстановления — код из 12 слов, расставленных в определенном порядке. Это главный ключ к кошельку и средствам в нем. Запишите, сделайте скриншот и сохраните код в надежном месте (сейфе, банковской ячейке или др.). Известны случаи, когда владельцы крупных сумм на своих криптокошельках теряли этот код и вместе с ним доступ ко всем своим средствам, так как восстановлению эта секретная фраза не подлежит.

Вот так выглядит готовый криптокошелек.

Теперь на сайте NFT-биржи, например opensea.io (есть еще Rarible и Nifty Gateway), выбираете пункт Create, а затем Submit NFTs. Вам будут предложены форматы файлов, которые можно загрузить на платформу (изображения, аудио, видео и др.).

Но для выставления на аукцион твита подойдет v.cent. Вы просто вставляете ссылку в поле ввода, составляете привлекательное описание вашего твита, а затем принимаете или отклоняете предложения покупателей.

Если остались вопросы по размещению ссылки на v.cent, вот подробный гайд от платформы.

Создание уникального токена бесплатно, а вот его верификация и выставление на аукцион для продажи обойдется в 0,03 Ether. Актуальный курс к рублю можно посмотреть здесь.

Ether (ETH) — это валюта, которая поддерживает платформу Etherium.

Etherium — криптовалюта и платформа, обеспечивающая работу блокчейна.

Операции на платформе оплачиваются газом, где газ — это единица измерения вычислительной работы транзакций или смарт-контрактов, производимых майнерами за свой счет для поддержания всей платформы.

Ваши права

Несмотря на то что технология смарт-контрактов NFT была разработана еще 2017 году, а на сегодняшний день (13 сентября, 2021) есть несколько крупных сделок по продаже твитов, определенного кодифицированного алгоритма, который бы сделал процесс регистрации, продажи и покупки такого рода товаров понятным каждому, пока нет.

Digital-версии мировых шедевров сейчас активно продаются. Но возникают сложности с определением авторских прав, и здесь важно отделение искусства от факта владения им. Если у вас есть подлинник digital-произведения, это совсем не означает, что права на использование изображения, аудио или текста (в зависимости от произведения) принадлежат вам. Поэтому необходимо хотя бы поверхностно знать процесс работы блокчейна и обладать знаниями в правовом поле (или проконсультироваться с юристом).

Факты об NFT

  • Маркетплейс по продаже NFT, как и кураторы в оффлайн галереях, забирают процент от продажи товара. Выбирая маркетплейс, оцените объем операций, производимых на нем. Чем больше транзакций на маркетплейсе, тем ниже их стоимость для продавца.
  • Культура утилизации (использования) NFT-произведений остается неопределенной. Например, трансляция NFT-изображения на digital-поверхностях будет считаться демонстрацией подлинника, а распечатанная версия будет считаться копией. Для демонстрации произведений создаются виртуальные миры (Cryptovoxels, Decentraland, Somniumspace и др.). В них можно строить целые города, общаться с другими артистами и ходить на виртуальные ивенты.
  • С помощью NFT можно манипулировать чувствами коллекционеров: для некоторых людей факт обладания чем-то уникальным не сравним с космической стоимостью NFT.
  • Через маркетплейсы можно продать арты еще невыпущенной компьютерной игры и собрать средства на запуск. Например, вы можете разместить на аукционе героя из последнего эпизода игры, уникальную экипировку и др.
  • В блокчейне нет посредничества. Точнее посредником между продавцом и покупателем выступает код. Покупатель оплачивает товар, а программа распределяет деньги между продавцом, создателем NF-токена (если это перепродажа) и самой платформой.

Как создать NFT из фотографии

  • Скачайте приложение Photure из магазина Play Маркет и выдайте все необходимые разрешения на использовании камеры и микрофона;

Метаданные и выпуск NFT — блокчейн-разработка на Tezos

  • Сделайте снимок на встроенную в приложение Photure камеру. При необходимости вы можете обработать фотографию во встроенном фоторедакторе;
  • Нажмите на кнопку «Загрузить» в нижнем правом углу экрана; 
  • Придумайте название для вашего токена, добавьте описание и укажите адрес Ethereum кошелька для привязки фотографии к блокчейну;
  • Нажмите кнопку «Mint NFT»

Метаданные и выпуск NFT — блокчейн-разработка на Tezos

Вот и все! Спустя несколько секунд ваш первый NFT будет создан, а рядом с фотографией появится надпись «Complete».

Что делать, если кошелька Ethereum у вас еще нет?

Если вы еще не успели обзавестись собственным кошельком Ethereum, создать его можно прямо из приложения Photure. Для этого рядом со строкой «Ethereum Wallet Address» нажмите на кнопку «Make a wallet» и следуйте указаниям на экране вашего смартфона:

  • Установите кошелек MetaMask из магазина приложений;

Метаданные и выпуск NFT — блокчейн-разработка на Tezos

  • Создайте новый счет, придумайте пароль и сохраните предложенную seed-фразу от будущего кошелька в надежном месте;
  • Чтобы скопировать ваш адрес Ethereum, перейдите на главный экран и кликните по строке, расположенной сразу под вашим аккаунтом (0х………..);

Метаданные и выпуск NFT — блокчейн-разработка на Tezos

  • Вернитесь в приложение Photure и вставьте адрес в поле «Ethereum wallet address».

Смарт контракт – это умный договор, работающий на блокчейне. Чаще всего использование смарт контрактов встречается на Ethereum, в том числе при создании NFT . На смарт контрактах сегодня построено практически все DeFi-пространство

NFT нельзя разделить или заменить , его можно сравнить с полностью уникальным предметом в реальном физическом мире. Впервые NFT появился в 2017 году в сеть Ethereum в качестве игры «Криптокотики» (Crypto Kitties), в ней можно растить и разводить криптовалюту в виде котов

Метаданные — стандартизированное описание смарт-контракта или токена, которое включает название, тикер, описание, количество знаков после запятой, ссылку на иконку, поддерживаемые интерфейсы и другие данные

Оцените статью
NFT Эксперт