Экономика токенов — популярный словарный запас в деловом мире. Два основных типа токенов: взаимозаменяемые и невзаимозаменяемые токены. NFT (non-fungible token) — это уникальный цифровой идентификатор, который нельзя скопировать, заменить или разделить, который записывается в блокчейне. Он предоставляет общедоступный сертификат подлинности или доказательство права собственности.
Активы, особенно нематериальные активы, могут оцениваться непрерывно и публично абсолютно прозрачным и деструктивным способом по сравнению с традиционной оценкой нематериальных активов, хотя само по себе владение NFT не имеет юридического значения.
В этой статье я расскажу, как создавать коллекции Web3 NFT с использованием Python, Openzeppelin и Pinata, которые могут быть зарегистрированы на рынках Opensea.
Ингредиенты Web3 NFT — создавайте NFT с помощью Python, Openzeppelin, Solidity
Оглавление
- Смарт-контракт NFT
- Метаданные
- Интеграция учетной записи Opeasea
- Сценарий развертывания Python
- Brownie-config, ENV и AssistScripts
- Полные сценарии построения NFT с использованием Python, Openzeppelin, Pinata
Смарт-контракт NFT
Помимо взаимозаменяемого токена, нам нужно начать с разработки кода смарт-контракта в разработке NFT.
Во-первых, мы можем эффективно использовать существующие модули, такие как Openzeppelin, что может сэкономить время на разработку общих функций. Не забудьте также добавить зависимости в файл brownie-config.YAML. Если у вас есть какие-либо вопросы, связанные с этим, обратитесь к другим статьям в коллекции Easy2Digital web3.
.// contracts/GameItem.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.6.0;
import "@openzeppelin/contracts/token/ERC721/ERC721.sol" ;
Как видите, ERC721, который отличается от взаимозаменяемого токена ERC20, является стандартным невзаимозаменяемым токеном. Таким образом, в рамках этого модуля мы создаем контракт с использованием ERC721.
- Здесь в ERC721 есть два параметра: один — полное имя, а другой — короткое имя созданного NFT. И он начинается с токенов, как вы увидите в созданной коллекции, включая функцию «плюс» когда вы создаете NFT один за другим.
contract SimpleCollection is ERC721 {
uint256 public to encounte;
constructor () public ERC721 ("LouisNFT", "LVnft") {
tokenCounter = 0 ;
}
function createCollection ( string memory tokenURI ) public returns ( uint256 ) {
uint256 newTokenId = tokenCounter;
_safeMint ( msg.sender , newTokenId);
_setTokenURI (newTokenId, tokenURI);
tokenCounter = tokenCounter + 1 ;
return newTokenId;
}
}
- Затем каждый новый NFT имеет уникальный URI токена и идентификатор токена. Идентификатор токена хешируется с помощью uint256 на основе номера счетчика токена. И URI токена в основном включает в себя всю существенную информацию о NFT, включая изображение. Я пройду через это через мгновение.
Метаданные
Метаданные — это файл JSON, который позволяет таким приложениям, как OpenSea, извлекать обширные данные для цифровых активов и легко отображать их в приложении. Вот элементы, включенные в базовый файл метаданных, следующим образом:
Хранение данных в блокчейне может быть очень дорогим, за исключением файлов сценариев. Тем не менее, изображения, видео и аудио, которые могут быть большого размера, могут дорого храниться в блокчейне.
Поэтому обычно мы можем использовать децентрализованное хранилище, такое как IPFS. IPFS или межпланетная файловая система — это протокол, гипермедиа и одноранговая сеть для обмена файлами для хранения и обмена данными в распределенной файловой системе.
Есть два основных способа загрузить ваши материалы NFT в IPFS. Один из них — установить локальную среду IPFS для взаимодействия с сетью IPFS. Другой — запустить через стороннюю платформу, такую как Pinata.
Загрузите изображение NFT и файл JSON в Pinata для создания URI токена.
Прежде всего, первый шаг — создать учетную запись Pinata и подготовить изображение, которое вы хотите преобразовать в NFT.
Затем загрузите изображение в виде файла на Пинату, после чего вы сможете получить CID-ключ из этих материалов. Ключ будет использоваться для создания файла JSON.
Кроме того, поскольку URI токена представляет собой файл JSON, следующим шагом будет добавление всей информации, связанной с NFT, в файл JSON. Вот пример использования VSC следующим образом:
- Имя
- Изображение: структура URL-адреса IPFS, https://ipfs.io/ipfs/ + image CID key (Generated just now)
- Описание
- атрибут
И последнее, но не менее важное: как только файл JSON будет готов, вернитесь в Pinata, загрузите JSON и сгенерируйте ключ CID файла JSON. Вот образец окончательного URI маркера URL-адреса IPFS.
https://ipfs.io/ipfs/QmV8rPonNpVaKnH2ri826AWqJ5XxeKYdeJupjKch4kA1UK?filename=NFT1.json
Интеграция учетной записи Opeasea
OpenSea — это первая и крупнейшая в мире торговая площадка web3 для NFT и криптографических предметов коллекционирования. Просматривайте, создавайте, покупайте, продавайте и выставляйте на аукционы NFT с помощью OpenSea. Для любых NFT размещение на торговой площадке очень распространено, независимо от того, предназначено это для продажи или нет. Примечательно, что большинство компаний используют это для повышения узнаваемости бренда, а также помогают внедрять программы лояльности.
В этом случае мы можем смоделировать процесс листинга NFT, используя тестовую сеть OpenSea. Создание учетной записи opeansea testnet абсолютно бесплатно. В нашем случае мы будем использовать MetaMask для перечисления NFT. Поэтому, пожалуйста, не забудьте зарегистрировать тестовую учетную запись opensea, связанную с учетной записью тестовой сети MetaMask.
Для opeansea testnext URL-адрес NFT, в основном, он имеет две переменные: сеть криптовалюты и
Для URL-адреса листинга opeasa структура имеет две переменные, и вот пример
https://testnets.opensea.io/assets/ goerli/0x8eeb73f75e6d80a6a21302d1ec36d0ead0ceb295/0
- Сетевой адрес:
goerli/0x8eeb73f75e6d80a6a21302d1ec36d0ead0ceb295
- Счетчик токенов: 0 (это число представляет порядок NFT, 0 означает, что это первый)
Вскоре мы воспользуемся этим в сценариях развертывания Python.
Сценарий развертывания Python
Помимо импорта модулей Brownie и AssistScript, а также создания взаимозаменяемого токена, для развертывания NFT нужны две переменные. Это sample_collection_URI и OPEASEA_URL.
sample_collection_URI = "https://ipfs.io/ipfs/QmV8rPonNpVaKnH2ri826AWqJ5XxeKYdeJupjKch4kA1UK?filename. =NFT1.json"
OPENSEA_URL = "https://testnets.opensea.io/assets/ {} / {} "
Затем в основной функции нам нужно использовать функции createcollection
, созданные ранее в смарт-контракте NFT.
def main ():
account = get_account ()
Simple_Collection = SimpleCollection.deploy({ "from" : account })
tx = Simple_Collection .createCollection(
sample_collection_URI , { "from" : account })
tx .wait( 1 )
Brownie-config, ENV и AssistScripts
Помимо разработки взаимозаменяемых токенов, нам необходимо добавить эти скрипты. Для получения более подробной информации, пожалуйста, обратитесь к этим статьям
Смарт-контракт Brownie FundMe развернут на Ethereum с использованием Python и Web3
Как только скрипты будут готовы, мы можем запустить скрипты в конкретной сети, и результат здесь показывает, что это сделано, и NFT был зарегистрирован на рынке.
Brownie run scripts/deploy_NFTCreate.py –network goerli
Полные сценарии построения NFT с использованием Python, Openzeppelin, Pinata
Если вы заинтересованы в Web3 NFT — создавайте и перечисляйте NFT с использованием Python, Openzeppelin, Pinata,
Я надеюсь, вам понравится читать Web3 NFT — Build and List NFTs Using Python, Openzeppelin и Pinata. Если вы это сделали, пожалуйста, поддержите нас, выполнив одно из перечисленных ниже действий, потому что это всегда помогает нашему каналу.
- Поддержите и пожертвуйте мой канал через PayPal ( paypal.me/Easy2digital )
- Подпишитесь на мой канал и включите колокольчик уведомлений канала Easy2Digital Youtube .
- Подписывайтесь и лайкайте мою страницу Страница Easy2Digital в Facebook
- Поделитесь статьей в своей социальной сети с хэштегом #easy2digital
- Вы подписываетесь на нашу еженедельную рассылку, чтобы получать последние статьи, видео и коды скидок Easy2Digital.
- Подпишитесь на наше ежемесячное членство через Patreon, чтобы пользоваться эксклюзивными преимуществами ( www.patreon.com/louisludigital )