NFT Marketplace on Ethereum Blockchain based on course. Made in React

Содержание
  1. Name already in use
  2. Что такое торговая площадка NFT?
  3. Main Features
  4. Что такое NFT маркетплейс?
  5. Axies – NFT Marketplace Elementor Template Kit Nulled Free Download
  6. Updated Lately to Version: Latest
  7. Last Updated: 20220411
  8. Axies – NFT Marketplace Elementor Template Kit Nulled Download Now
  9. Axies – NFT Marketplace Elementor Template Kit Free Download
  10. Current Version: Latest
  11. What are nulled items and why Axies – NFT Marketplace Elementor Template Kit Nulled is the right choice?
  12. Latest Items
  13. Как начать разработку NFT Marketplace?
  14. Latest commit
  15. Ключевые особенности NFT Marketplace
  16. Рост рынка NFT
  17. Files
  18. Overview
  19. To run the app
  20. How to watch the 2022 FIFA World Cup online live stream?
  21. In Europe (the European Broadcasting Union)
  22. Middle Eastern and North African Countries (belN Sports):
  23. Sub-Saharan Africa (SuperSport):
  24. Зачем вам нужна торговая площадка NFT?
  25. Как разработать NFT Marketplace с помощью IPFS и Flow?
  26. Отображение предметов коллекционирования NFT
  27. Получение NFT из FLOW
  28. Получение медиа из IPFS
  29. Развертывание и выпуск токенов
  30. Разработка торговой площадки NFT
  31. Поддержите блог, перечислив небольшие чаевые
  32. Заключительные слова
  33. Поддержите блог, перечислив небольшие чаевые
  34. Как работает торговая площадка NFT?
  35. Where to Find 4K Live Streams of the 2022 FIFA World Cup?
  36. Стек технологий, необходимый для создания торговой площадки NFT
  37. Список лучших торговых площадок NFT в 2021 году
  38. 1. OpenSea
  39. 2. Nifty gateway
  40. 3. SuperRare
  41. 4.Rarible
  42. 5. Foundation

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

1


0

Что такое торговая площадка NFT?

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

Торговые площадки NFT ориентированы на продажу определенных активов. Например, торговая площадка Valuables NFT позволяет пользователям покупать и продавать твиты.

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

Nftzai NFT Buy Sell Marketplace Laravel Script Download

Main Features

  • Easy Installation
  • Fully Responsive and Dynamic Admin
  • Managing Users
  • Managing Subscriptions
  • Purchasing and Bid an Artwork Easily
  • Selling and Reselling
  • Send Email to subscribers
  • Integrate Coin
  • User Friendly front-end
  • and more

Live Demo: View Demo

Free download nftzai – nft buy/sell marketplace laravel script nulled by zainiktheme on Codecanyon digital marketplace exchange software download.

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

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

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

В Ethereum теперь есть два стандарта NFT, такие как ERC-721 и ERC-1155.
У Tron есть стандарт TRC-721,
Binance также выпустила стандарты, такие как BEP-721 и BEP-1155, для разработки NFT.

Ожидается, что рынок NFT будет стремительно расти, и развитие рынка NFT — прекрасная возможность. Поэтому мы составили полное руководство, которое ответит на вопросы о создании торговой площадки NFT.

Поскольку рынок невзаимозаменяемых токенов достигает огромного объема, полезно оглянуться на первые дни NFT и вспомнить проблемы, обнаруженные Cryptokitties.

Cryptokitties были первым примером потенциального массового внедрения NFT, созданным командой Dapper Labs. С тех пор были представлены новые рыночные платформы NFT, такие как Rarible, Sorare и OpenSea, чтобы стимулировать развитие NFT. В исследовании, опубликованном на NonFungible.com, говорится, что общая стоимость транзакций NFT в 2020 году увеличилась на 299% по сравнению с 2019 годом и превысила 250 миллионов долларов. Эксперты прогнозируют, что невзаимозаменяемые токены станут движущей силой виртуальной экономики в ближайшие 10 лет.

People concerned about the ownership of their digital assets are using NFT on a large scale because NFT ensures the authority of digital intellectual property globally. In addition, NFT provides authentication, which helps to prevent stolen and unauthorized use of digital assets. Now artists can sell their digital assets at a fair value without worrying about copying or stealing.

Filmmakers are also creating NFTs for film promotion nowadays. The music industry has joined the NFT marketplace to prevent piracy and ensure licenses for selling music. Gamers also use the NFT marketplace a lot. They love to buy their favorite characters and use them for profile pictures or logos. Many collectors love to buy digital assets. And many collectors resell NFTs. Fans and Supporters buy NFT of their role models, sports teams, and comic characters.

So, to meet the growing demand for NFTs, the demand for the NFT marketplace is also increasing. We have built the NFTBOX to meet the demand of this expanding NFT marketplace. People who want to take this growing business opportunity should use NFTBOX to create their own NFT marketplace.

Nftzai v2.1 - NFT Buy/Sell Marketplace Laravel Script

This file has UNTOUCHED status — (original developer code without any tampering done)

Information
Guests are not allowed to comment. Please register for a free account.

Что такое NFT маркетплейс?

Торговая площадка не взаимозаменяемых токенов — это платформа, на которой трейдеры могут без проблем покупать или продавать NFT.

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

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

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


📺 Live Channel 1
📺 Fast Live
📺 English 2
📺 Multi-Language
📺 Live Channel 2
📺 PC/IOS Live
📺 WC Select 1
📺 WC Select 2




Qatar will play host to the FIFA World Cup in 2022, which will take place from November 21 and December 18. It will be the first time the Arab world has hosted the World Cup and only the second time the championship has occurred fully in Asia (after 2002 in South Korea and Japan).

Once again, the best national teams in the world will meet at the World Cup to compete for football’s ultimate prize. The FIFA World Cup is watched by hundreds of millions of people worldwide every year.

Qatar is no stranger to hosting major sporting events, having previously played host to the Asian Games in 2006 and the FIFA Club World Cup in 2020. With a population of 2.7 million, it will be the world’s smallest nation ever to host the World Cup. However, Qatar is confident in its ability to stage a successful tournament because it has recently invested heavily in infrastructure.

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

учетные данные администратора

  1. https://nftzai.zainikthemes.com
  2. Электронная почта: admin@email.com
  3. Пароль: 123456

учетные данные пользователя

  1. https://nftzai.zainikthemes.com
  2. Электронная почта: user1@email.com
  3. Пароль: 123456

Простой процесс установки (Есть документация по установке и настройке)

Полностью отзывчивая и динамичная панель администратора

Полностью отзывчивая и динамичная панель пользователя

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

Легко интегрировать монету

Красивый и удобный интерфейс

Легко управлять содержимым сайта

Отправить письмо подписчикам

Управление социальными сетями, контактами и т. д.

Маркетплейс по NFT

Магазин по NFT

NFT Marketplace on Ethereum Blockchain based on course. Made in React

Axies – NFT Marketplace Elementor Template Kit Nulled Free Download

Updated Lately to Version: Latest

Last Updated: 20220411

NFT Marketplace on Ethereum Blockchain based on course. Made in React

Axies – NFT Marketplace Elementor Template Kit Nulled Download Now

Axies NFT Marketplace Template Kit for non-fungible tokens, crypto-collectibles, fashion, digital art, crypto art, and a plethora of other items. Create an online marketplace using the template. In the NFT game, you can easily buy, sell, trade, and auction items. Axies made specifically for the NFT game item market. The popular Elementor page builder plugin is used in Axies Template Kit. This template is easily customizable, fully responsive, and supports all modern browsers and devices.

Axies – NFT Marketplace Elementor Template Kit Free Download

Current Version: Latest

What are nulled items and why Axies – NFT Marketplace Elementor Template Kit Nulled is the right choice?

All “Nulled” means is that the item is preactivated and ready to be used upon installation (License notices, if present, can simply be ignored). License keys are only required for the original author support (which is of course not included).



  • To deliver the most authentic and relevant version, we purchase and download from original developers. We are not directly related or associated with the makers of product, but we respect their effort and original work. Names, phrases, and trademarks are used only to the amount necessary to correctly and fairly identify the object.



  • File can be used on as many sites as you want, in accordance to WordPress’s GPL licensing policies.

Latest Items

Как начать разработку NFT Marketplace?

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

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

NFT Marketplace on Ethereum Blockchain based on course. Made in React

Ниже приведены некоторые функции, которые можно добавить на рынок NFT:

  • Витрина (Торговая площадка NFT должна иметь витрину, которая предлагает пользователям всю информацию, необходимую для товара: ставки, владельцев, предварительный просмотр или историю цен.)
  • Фильтры (Использование фильтров упрощает навигацию по сайту, особенно если вы планируете создать торговую площадку для большого количества предметов коллекционирования. Добавив функцию фильтров, пользователи могут выбирать товары по способу оплаты, статусу листинга, категории и коллекции.)
  • Поиск предметов (Платформа торговой площадки NFT должна поддерживать тегирование и управление категориями, чтобы пользователи могли искать предметы коллекционирования. Используйте панель поиска на сайте и добавляйте категории.)
  • Создание списков (Пользователь должен иметь возможность создавать и отправлять предметы коллекционирования. Используя эту функцию, пользователь должен загружать файлы и вводить информацию о токене, такую ​​как имя, теги, описание.)
  • Покупка и предложение (Платформа торговой площадки NFT должна иметь функцию, позволяющую пользователям покупать и предлагать ставки на NFT, перечисленные на платформе. Функция назначения ставок должна включать дату истечения срока действия ставки и позволять пользователям просматривать подробную информацию о текущем статусе ставок.)
  • Кошелек (Платформа NFT Marketplace должна иметь кошелек, который позволяет пользователям хранить, отправлять и получать невзаимозаменяемые токены. Самый простой способ интегрировать эту функцию — предоставить пользователям подключенный кошелек, который они уже используют. Например, вы можете интегрировать самые популярные кошельки, такие как Coinbase, Formatic или MyEtherWallet.)

Latest commit

@Jerga99

Ключевые особенности NFT Marketplace

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

  1. Витрина
  2. Фильтр
  3. Аукцион
  4. Статус объявления
  5. Создание объявлений
  6. Цифровой кошелек
  7. Рейтинги
Про NFT:  Что такое nft стоимость

Разработка торговой площадки NFT с этими функциями приведет вас к тому, что вы станете успешным предпринимателем в криптопространстве.

NFT Marketplace on Ethereum Blockchain based on course. Made in React

Рост рынка NFT

Не взаимозаменяемые токены, доступные на торговой площадке NFT, отличаются от взаимозаменяемых токенов. Большинство не взаимозаменяемых токенов сейчас находятся в цифровом формате. Таким образом, разработчики NFT могут найти инновационные способы предоставить что-то уникальное для своих пользователей или клиентов с новыми потоками доходов. Согласно отчету известной компании по отслеживанию технологий и nonfungible.com в 2020 году рынок невзаимозаменяемых токенов стоил более 250 миллионов долларов. Помимо этого, в отчете также отражен рост рынка NFT более чем на 299% в 2020 году. В дополнение к этому отчету CryptoSlam предполагает, что торговые площадки NFT добились успеха в отрасли, выручив более 1 миллиарда долларов с точки зрения продаж.

Files

Permalink

Failed to load latest commit information.

Latest commit message

This is a Next.js project. Full process and video lectures how to create the application can be found here: NFT Marketplace in React, Typescript & Solidity — Full Guide

Overview

Marketplace has dependencies on multiple technologies.

To run the app

  1. run npm install to install dependencies

NEXT_PUBLIC_NETWORK_ID=5777
NEXT_PUBLIC_TARGET_CHAIN_ID=1337
NEXT_PUBLIC_PINATA_DOMAIN=https://gateway.pinata.cloud
SECRET_COOKIE_PASSWORD={your custom at least 32 characters long password!}
PINATA_API_KEY={your api key from pinata}
PINATA_SECRET_API_KEY={your api secret key from pinata}
  • (your api pinata key has to allow pinFileToIPFS and pinJSONToIPFS rules)
  1. Then migrate a contract to Ganache, contract can be found in the contracts folder. It’s called NftMarket.sol
  • To migrate the contract run truffle migrate in the terminal while Ganache network is setup and running.

  • Do not forget to link trufle-config.js with Ganache, just go to config and click Add Project

  • keys.json must be created if you want to deploy to Ropsten, if not, just remove import of keys.json from trufle-config.js and also comment out ropsten configuration

  1. Now everything is setup and you can test out the app.
  • Run npm run dev in the terminal. App will run at localhost:3000

How to watch the 2022 FIFA World Cup online live stream?

The BBC has secured the exclusive broadcast rights in the UK for the FIFA World Cup 2022. All games will air live on BBC One and BBC Two, with additional coverage available on the BBC Sport website and app. The new deal divides broadcasting duties between BBC and ITV, encompassing television, radio, and the internet.

In the United States, in 2022, you can watch the FIFA World Cup on Fox Sports. Each game will be shown live on Fox, FS1, and FS2 in addition to the Fox Sports Go app. Telemundo, a network in Spanish, also carries live coverage of the competition.

The 2022 FIFA World Cup will be broadcast live in India by Sports18 Network. On Voot, all sporting events will be televised live, and the Voot app will house all feeds. Unfortunately, Sony Pictures Networks was unable to secure the requisite airtime clearances.

The 2022 FIFA World Cup will be broadcast on SBS TV Channels Network in Australia. Moreover, you may watch every game live on the SBS website or mobile app.

beIN Sports has secured exclusive broadcast rights to the 2022 FIFA World Cup in 24 Middle Eastern and North African nations. The broadcaster will air live coverage of all matches on beIN Sports HD 1 and beIN Sports HD 2, as well as its digital platform, beIN SPORTS CONNECT.

TSN and RDS will air coverage of Canada’s 2022 FIFA World Cup. You can watch every match of the World Cup live on TSN and RDS’s respective websites and mobile apps.

TyC Sports broadcast every minute of the FIFA World Cup in Argentina, from the opening game to the final. With a subscription membership to TyC Sports, mobile viewers may now enjoy uninterrupted coverage.

In all of sub-Saharan Africa, only SuperSport can air World Cup games. Each and every World Cup match will be shown live on SuperSport TV. All of the matches will be broadcast live on the SuperSport app.

Besides the official broadcasters, viewers in many other parts of the world will be able to watch the World Cup on networks such as beIN Sports (Middle East and North Africa), CCTV (China), TSN/RDS (Canada), DirecTV (Latin America), and many more. Below is a complete listing of international broadcasters that carries content from your country.

In Europe (the European Broadcasting Union)

Europe Albania Armenia Austria Azerbaijan Belarus Belgium Bosnia-Herzegovina Bulgaria Croatia Cyprus Czech Republic Estonia Georgia Hungary Iceland Israel Kazakhstan Kosovo Latvia Liechtenstein Lithuania Luxembourg Macedonia Malta Moldova Montenegro Netherlands Poland Portugal Republic of Ireland Slovakia Slovenia Switzerland Turkey Ukraine

Middle Eastern and North African Countries (belN Sports):

Algeria, Bahrain, Chad, Djibouti, Egypt, Iran, Iraq, Jordan, Kuwait, Lebanon, Libya, Mauritania, Morocco, Oman, Palestinian Territories, Qatar, Saudi Arabia, Somalia, Sudan, Syria, Tunisia, United Arab Emirates, Yemen; NonExclusive: Chad, Mauritania, Somalia, and Sudan.

Sub-Saharan Africa (SuperSport):

Africa Angola Benin Botswana Burkina Faso Burundi Cameroon Cape Verde Central African Republic Comoros Congo Democratic Republic of the Congo Equatorial Guinea Eritrea Ethiopia Gabon Gambia Ghana Guinea Guinea-Bissau Ivory Coast Madagascar Mali Mauritius Mayotte Mozambique Namibia Nigeria Reunion Rwanda Sao Tome and Principe South Africa St. Helena and Ascension

These countries are not exclusive to one another: Chad, Djibouti, Mauritania, Somalia (Somaliland), South Sudan, and Sudan.

Зачем вам нужна торговая площадка NFT?

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

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

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

Заинтересованные покупатели и продавцы получат прекрасную возможность покупать и продавать не взаимозаменяемые токены.

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

  1. Во-первых, пользователю платформы нужен цифровой кошелек NFT для хранения, получения и передачи не взаимозаменяемых токенов. Кроме того, вам нужна криптовалюта для оплаты транзакций в желаемой сети блокчейнов.
  2. Имейте криптовалюту, возможно, эфир или любую другую валюту, поддерживаемую на выбранной торговой площадке NFT.
  3. Любую криптовалюту или токены можно купить с помощью кредитных карт на разных торговых площадках. Такие как Coinbase Wallet, eToro и Kraken.
  4. Выберите NFT, который вы хотите купить, и заплатите криптовалюту за покупку NFT. Но перед покупкой NFT проверьте профиль продавца, является ли это верифицированной учетной записью или нет.

Как разработать NFT Marketplace с помощью IPFS и Flow?

Мы поделились примером создания контракта,выпуска токена, создания приложения для просмотра NFT, сделанных с помощью этого контракта, и создания торговой площадки для перемещения NFT другим пользователям.

Начнем с создания контракта и выпуска токена.

Установите Flow CLI в вашу систему.

Существуют разные команды для установки CLI в зависимости от разных операционных систем.

Например, чтобы установить Flow CLI на macOS, используйте команду:

data-hren="https://storage.googleapis.com/flow-cli/install.ps1" rel= https://storage.googleapis.com/flow-cli/install.ps1') }
data-hren="https://storage.googleapis.com/flow-cli/install.sh" rel=>https://storage.googleapis.com/flow-cli/install.sh)

Файлы активов будут храниться в IPFS.

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

Также важно установить NodeJS и текстовый редактор, чтобы выделить код смарт-контракта Flow.

Второй шаг — создать каталог для проекта с помощью команды:

Инициализируйте новый потоковый проект и поместите его в этот каталог:

cd pinata-party
flow project init

Теперь откройте проект в редакторе кода и приступим к работе. Сначала создайте папку с именем cadence. Добавьте в эту папку еще одну папку с именем contracts . Наконец, создайте файл в папке контрактов с именем PinataPartyContract.cdc

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

Настройте файл для среды эмулятора, и тогда мы можем приступить к написанию контракта.

Нам нужно обновить объект контракта в flow.json, используя код:

contracts": {
"PinataPartyContract": "./cadence/contracts/PinataPartyContract.cdc"
}

Обновите объект развертывания в этом файле, используя приведенный ниже код:

deployments": {
"emulator": {
"emulator-account": ["PinataPartyContract"]
}
}

Это позволит Flow CLI использовать эмулятор для развертывания нашего контракта. Этот код также ссылается на учетную запись и контракт, которые мы собираемся написать в ближайшее время.

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

Откройте PinataPartyContract.cdc и выполните следующий код:

pub contract PinataPartyContract {
pub resource NFT {
pub let id: UInt64
init(initID: UInt64) {
self.id = initID
}
}
}

Первый шаг — составить контракт.

Давайте начнем с определения PinataPartyContract и создадим внутри него ресурс. Ресурсы — это элементы, сохраненные в учетных записях пользователей, которые доступны через меры контроля доступа.

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

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

pub resource interface NFTReceiver {
pub fun deposit(token: @NFT, metadata: {String : String})
pub fun getIDs(): [UInt64]
pub fun idExists(id: UInt64): Bool
pub fun getMetadata(id: UInt64) : {String : String}
}

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

getIDs
idExists
deposit
getMetadata

Затем необходимо определить интерфейс сбора токенов. Рассматривайте его как кошелек, в котором хранятся NFT всех пользователей.

pub resource Collection: NFTReceiver {
pub var ownedNFTs: @{UInt64: NFT}
pub var metadataObjs: {UInt64: { String : String }}
init () {
self.ownedNFTs <- {}
self.metadataObjs = {}
}
pub fun withdraw(withdrawID: UInt64): @NFT {
let token <- self.ownedNFTs.remove(key: withdrawID)!
return <-token
}
pub fun deposit(token: @NFT, metadata: {String : String}) {
self.metadataObjs[token.id] = metadata
self.ownedNFTs[token.id] <-! token
}
pub fun idExists(id: UInt64): Bool {
return self.ownedNFTs[id] != nil
}
pub fun getIDs(): [UInt64] {
return self.ownedNFTs.keys
}
pub fun updateMetadata(id: UInt64, metadata: {String: String}) {
self.metadataObjs[id] = metadata
}
pub fun getMetadata(id: UInt64): {String : String} {
return self.metadataObjs[id]!
}
destroy() {
destroy self.ownedNFTs
}
}

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

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

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

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

Мы ограничиваем первоначальное добавление метаданных выполнением майнинга, чтобы сохранить его конфиденциальность. Добавьте следующий код ниже ресурса Collection:

pub fun createEmptyCollection(): @Collection {
return <- create Collection()
}
pub resource NFTMinter {
pub var idCount: UInt64
init() {
self.idCount = 1
}
pub fun mintNFT(): @NFT {
var newNFT <- create NFT(initID: self.idCount)
self.idCount = self.idCount + 1 as UInt64
return <-newNFT
}
}

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

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

Про NFT:  Откройте для себя будущее искусства с Clouding NFT: руководство для начинающих

Добавьте инициализатор основного контракта ниже ресурса NFTMinter:

init() {
self.account.save(<-self.createEmptyCollection(),to: /storage/NFTCollection)
self.account.link<&{NFTReceiver}>(/public/NFTReceiver,target:/storage/NFTCollection)
self.account.save(<-create NFTMinter(), to: /storage/NFTMinter)
}

Функция инициализатора вызывается только при развертывании контракта. Она выполняет три действия:

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

Ресурс NFTMinter хранится в хранилище счета для создателя контракта. Это означает, что только создатель контракта может выпускать токены.

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

Когда контракт готов, давайте развернем его. Прежде чем развернуть его:

Протестируйте его на игровой площадке Flow Playground.

Перейдите на Flow Playground и нажмите на первый аккаунт в левой боковой панели.

Замените весь код на код контракта и нажмите кнопку Развернуть.

Если все прошло успешно, вы должны увидеть журнал в нижней части экрана:

16:48:55 Deployment Deployed Contract To: 0x01

Поскольку теперь настало время развернуть контракт на локально запущенном эмуляторе, выполните следующую команду:

<p class="in io ip iq ir lt lu dy">flow project start-emulator</p>

Запустив эмулятор и настроив файл flow.json, можно развернуть контракт с помощью следующей команды:

<p class="in io ip iq ir lt lu dy">flow project deploy</p>

Если все прошло успешно, вы должны увидеть результат, подобный этому:

Deploying 1 contracts for accounts: emulator-account

Теперь перейдем к выпуску NFT.

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

Создайте новую директорию в корне нашего проекта pinata-party и назовите ее «transactions». После создания папки создайте в ней новый файл с именем MintPinataParty.cdc.

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

После загрузки файла вам будет присвоен хэш IPFS. Скопируйте хэш, так как он будет использоваться в процессе выпуска. Теперь добавьте следующий код в файл MintPinataParty.cdc.

import PinataPartyContract from 0xf8d6e0586b0a20c7
transaction {
let receiverRef: &{PinataPartyContract.NFTReceiver}
let minterRef: &PinataPartyContract.NFTMinter
prepare(acct: AuthAccount) {
self.receiverRef=acct.getCapability<&{PinataPartyContract.NFTReceiver}>(/public/NFTReceiver)
.borrow()
?? panic("Could not borrow receiver reference")
self.minterRef = acct.borrow<&PinataPartyContract.NFTMinter>(from: /storage/NFTMinter)
?? panic("could not borrow minter reference")
}
execute {
let metadata : {String : String} = {
"name": "The Big Swing",
"swing_velocity": "29",
"swing_angle": "45",
"rating": "5",
"uri": "ipfs://QmRZdc3mAMXpv6Akz9Ekp1y4vDSjazTx2dCQRkxVy1yUj6"
}
let newNFT <- self.minterRef.mintNFT()
self.receiverRef.deposit(token: <-newNFT, metadata: metadata)
log("NFT Minted and deposited to Account 2's Collection")
}
}

Во-первых, мы определили две ссылочные переменные, minterRef и receiverRef. В этом сценарии мы одновременно являемся получателем и создателем NFT. Эти переменные ссылаются на ресурсы, созданные в контракте. Транзакция завершится неудачей, если лицо, выполняющее ее, не имеет доступа к ресурсу.

Приведенный выше контракт будет выпускать и депонировать НФТ. Теперь мы отправим транзакцию и зачислим NFT. Но перед этим нам нужно подготовить счет. Создайте закрытый ключ для подписи из командной строки в корневой папке проекта.

Выполните приведенную ниже команду:

Он предоставит вам открытый и закрытый ключи. Обязательно защитите свой закрытый ключ.

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

<p style="text-align: left;">"accounts": {
"emulator-account": {
"address": "YOUR ACCOUNT ADDRESS",
"privateKey": "YOUR PRIVATE KEY",
"chain": "flow-emulator",
"sigAlgorithm": "ECDSA_P256",
"hashAlgorithm": "SHA3_256"
}
},

Если вы хотите хранить что-либо из этого проекта в удаленном git-репозитории или на Github, вам не следует включать закрытый ключ. Вам может понадобиться .gitignore всего flow.json. Хотя мы используем только локальный эмулятор, хорошо бы держать ключи под защитой.

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

Создайте новую папку scripts в корне вашего проекта. Создайте внутри папки файл CheckTokenMetadata.cdc. Добавьте в этот файл следующий код:

<p style="text-align: left;">import PinataPartyContract from 0xf8d6e0586b0a20c7</p>
<p style="text-align: left;">pub fun main() : {String : String} {</p>
<p style="text-align: left;">let nftOwner = getAccount(0xf8d6e0586b0a20c7) // log("NFT Owner")</p>
<p style="text-align: left;">let capability = nftOwner.getCapability&lt;&amp;{PinataPartyContract.NFTReceiver}&gt;(/public/NFTReceiver)</p>
<p style="text-align: left;">let receiverRef = capability.borrow()</p>
<p style="text-align: left;">?? panic("Could not borrow the receiver reference")</p>
<p style="text-align: left;">return</p>
<p style="text-align: left;">receiverRef.getMetadata(id: 1)</p>
<p style="text-align: left;">}</p>

В этом сценарии мы импортируем контракт с развернутого адреса. Мы определяем главную функцию и определяем три переменные внутри нее:

  • nftOwner

This account owns the NFT.

  • capability

Capabilities are access-controlled. If a capability is not available to the address attempting to borrow it, the script gets failed. In this example, we borrow capabilities from the NFTReceiver resource.

  • receiverRef

The variable takes our capability and states the script to borrow from the deployed contract.

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

Запустите скрипт с помощью следующей команды и посмотрите, что мы получим:

<p class="in io ip iq ir lt lu dy"><span class="ce lv ko fe ls b cb lw lx s ly">flow scripts execute ./scripts/CheckTokenMetadata.cdc</span></p>

Вы получите результат, подобный этому:

{“name”: “The Big Swing”, “swing_velocity”: “29”, “swing_angle”: “45”, “rating”: “5”, “uri”: “ipfs://QmRZdc3mAMXpv6Akz9Ekp1y4vDSjazTx2dCQRkxVy1yUj6“}

Наконец, вы создали смарт-контракт Flow, создали токен, связали метаданные с токеном и сохранили базовые цифровые активы токена на IPFS.

Затем мы создадим внешнее приложение React, которое позволит вам отображать NFT, получая метаданные.

Отображение предметов коллекционирования NFT

Мы будем создавать простое приложение React, которое взаимодействует со смарт-контрактами Flow для проверки и получения NFT, принадлежащих пользователям.

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

Создайте приложение React в родительском каталоге pinata-party. Выполните следующую команду, чтобы создать приложение React:

<span class="ce lv ko fe ls b cb lw lx s ly">npx create-react-app pinata-party-frontend </span>

Когда вы закончите установку, вы увидите новый каталог с именем pinata-party-frontend. Перейдите в этот каталог и установите зависимости. Для первой части настройки внешнего интерфейса запустите:

<p class="in io ip iq ir mq mr dy"><span class="ce ms ld fe mp b cb mt mu s mv">npm i @onflow/fcl @onflow/types
</span>

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

Затем создайте файл конфигурации, который будет использоваться для взаимодействия с Flow JS SDK. Создайте файл config.js в каталоге src и добавьте следующий код:

<p class="in io ip iq ir mq mr dy"><span class="ce ms ld fe mp b cb mt mu s mv">import {config} from "@onflow/fcl"
config()
.put("accessNode.api", process.env.REACT_APP_ACCESS_NODE)
.put("challenge.handshake", process.env.REACT_APP_WALLET_DISCOVERY)
.put("0xProfile", process.env.REACT_APP_CONTRACT_PROFILE)</span>

Этот файл конфигурации просто помогает JS SDK работать с блокчейном Flow (или в данном случае с эмулятором). Чтобы сделать этот файл доступным во всем приложении, откройте   файл и добавьте эту строку:

class="ji jj fe jk b gc jl jm jn gf jo jp jq jr js jt ju jv jw jx jy jz ka kb kc kd ew ce">import "./config"

Важно иметь функцию аутентификации в приложении, чтобы обеспечить безопасную передачу активов NFT. Нам нужен компонент аутентификации. Создайте файл AuthCluster.js в каталоге src. Добавьте в этот файл следующее:

import React, {useState, useEffect} from 'react'
import * as fcl from "@onflow/fcl"
const AuthCluster = () =&gt; {
const [user, setUser] = useState({loggedIn: null})
useEffect(() =&gt; fcl.currentUser().subscribe(setUser), [])
if (user.loggedIn) {
return (
&lt;div&gt;
&lt;span&gt;{user?.addr ?? "No Address"}&lt;/span&gt;
<p style="text-align: left;">&lt;button className="btn-primary" onClick={fcl.unauthenticate}&gt;Log Out&lt;/button&gt;</p>
&lt;/div&gt;
)
} else {
return (
&lt;div&gt;
<p style="text-align: left;">&lt;button className="btn-primary"onClick={fcl.logIn}&gt;Log In&lt;/button&gt;</p>
<p style="text-align: left;">&lt;button className="btn-secondary" onClick={fcl.signUp}&gt;Sign Up&lt;/button&gt;</p>
&lt;/div&gt;
)
}
}
export default AuthCluster

Чтобы добавить этот компонент в приложение, замените файл app.js следующим:

<p class="hh hi hj hk hl ln lo by"><span class="ec lp ka df lm b jp lq lr s ls">
import './App.css';
import AuthCluster from './AuthCluster';</span><span class="ec lp ka df lm b jp lt lu lv lw lx lr s ls">function App() {
return (
&lt;div className="App"&gt;
&lt;AuthCluster /&gt;
&lt;/div&gt;
);
}</span><span class="ec lp ka df lm b jp lt lu lv lw lx lr s ls">export default App;</span>

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

Получение NFT из FLOW

Чтобы отображать созданные нами NFT, необходимо взаимодействовать с блокчейном Flow. В этом руководстве мы должны иметь возможность общаться с эмулятором Flow.

Давайте создадим компонент, который позволяет получать данные и отображать данные NFT. Создайте файл TokenData.js в каталоге src и добавьте в него следующий код:

import React, { useState } from "react";
import * as fcl from "@onflow/fcl";
const TokenData = () =&gt; {
const [nftInfo, setNftInfo] = useState(null)
const fetchTokenData = async () =&gt; {
const encoded = await fcl
.send([
fcl.script`
import PinataPartyContract from 0xf8d6e0586b0a20c7
pub fun main() : {String : String} {
let nftOwner = getAccount(0xf8d6e0586b0a20c7)
<p style="text-align: left;">let capability = nftOwner.getCapability&lt;&amp;{PinataPartyContract.NFTReceiver}&gt;(/public/NFTReceiver)
let receiverRef = capability.borrow()
?? panic("Could not borrow the receiver reference")
return receiverRef.getMetadata(id: 1)
}`
])
const decoded = await fcl.decode(encoded)
setNftInfo(decoded)
};
return (
&lt;div className="token-data"&gt;
&lt;div className="center"&gt;
&lt;button className="btn-primary" onClick={fetchTokenData}&gt;Fetch Token Data&lt;/button&gt;
&lt;/div&gt;
{
nftInfo &amp;&amp;
&lt;div&gt;
{
Object.keys(nftInfo).map(k =&gt; {
return (
&lt;p&gt;{k}: {nftInfo[k]}&lt;/p&gt;
)
})
}
<p style="text-align: left;">&lt;button onClick={()=&gt;setNftInfo(null)} className="btn-secondary"&gt;Clear Token Info&lt;/button&gt;</p>
&lt;/div&gt;
}
&lt;/div&gt;
);
};
export default TokenData;

В этом файле мы создаем компонент с кнопкой для получения данных токена. Мы также создали кнопку для очистки данных токена. При нажатии кнопки выборки вызывается функция fetchTokenData. Функция использует Flow JS SDK для запуска скрипта, который мы выполнили из командной строки. Получение результатов выполнения и установка результатов в переменную состояния nftInfo. Если переменная существует, пары ключ-значение отображаются из метаданных NFT на экране и кнопки для очистки данных.

Получение медиа из IPFS

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

В файле TokenData.js добавьте способ отображения видеофайла, полученного из IPFS. Обновите файл, чтобы он выглядел так:

import React, { useState } from "react";
import * as fcl from "@onflow/fcl";
const TokenData = () =&gt; {
const [nftInfo, setNftInfo] = useState(null)
const fetchTokenData = async () =&gt; {
const encoded = await fcl
.send([
fcl.script`
import PinataPartyContract from 0xf8d6e0586b0a20c7
pub fun main() : {String : String} {
let nftOwner = getAccount(0xf8d6e0586b0a20c7)
<p style="text-align: left;">let capability = nftOwner.getCapability&lt;&amp;{PinataPartyContract.NFTReceiver}&gt;(/public/NFTReceiver)</p>
let receiverRef = capability.borrow()
?? panic("Could not borrow the receiver reference")
return receiverRef.getMetadata(id: 1)
}
])
const decoded = await fcl.decode(encoded)
setNftInfo(decoded)
};
return (
&lt;div className="token-data"&gt;
&lt;div className="center"&gt;
&lt;button className="btn-primary" onClick={fetchTokenData}&gt;Fetch Token Data&lt;/button&gt;
&lt;/div&gt;
{
nftInfo &amp;&amp;
&lt;div&gt;
{
Object.keys(nftInfo).map(k =&gt; {
return (
&lt;p&gt;{k}: {nftInfo[k]}&lt;/p&gt;
)
})
}
&lt;div className="center video"&gt;
&lt;video id="nft-video" canplaythrough controls width="85%"&gt;
<p style="text-align: left;">&lt;source src={`https://ipfs.io/ipfs/${nftInfo["uri"].split("://")[1]}`} type="video/mp4" /&gt;</p>
&lt;/video&gt;
&lt;div&gt;
<p style="text-align: left;">&lt;button onClick={() =&gt; setNftInfo(null)} className="btn-secondary"&gt;Clear Token Info&lt;/button&gt;</p>
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
}
&lt;/div&gt;
);
};
export default TokenData;

Мы сделали это так, потому что настольный клиент IPFS позволяет нажимать и открывать ссылки.

Теперь NFT станет настоящим живым цифровым активом на блокчейне.

Теперь мы включим передачу NFT.

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

  • Механизм оплаты взаимозаменяемых токенов
  • Настройки подачи токенов
  • Возможности передачи токенов

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

Мы создадим взаимозаменяемый контракт токена, определив пустой контракт:

class="hh hi hj hk hl ln lo by"><span class="ec lp kb df lm b jp lq lr s ls">pub contract PinnieToken {</span><span class="ec lp kb df lm b jp lt lu lv lw lx lr s ls">} </span>

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

pub var totalSupply: UFix64
pub var tokenName: String
pub resource interface Provider {
pub fun withdraw(amount: UFix64): @Vault {
post {
result.balance == UFix64(amount):
"Withdrawal amount must be the same as the balance of the withdrawn Vault"
}
}
}

Добавьте вышеуказанный контракт в пустой контракт.

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

pub resource interface Receiver {
pub fun deposit(from: @Vault)
}
pub resource interface Balance {
pub var balance: UFix64
}

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

Про NFT:  How to Create an NFT Marketplace with Filebase + Flow

Давайте создадим ресурс Vault и добавим следующий код под ресурсом Balance:

pub resource Vault: Provider, Receiver, Balance {
pub var balance: UFix64
init(balance: UFix64) {
self.balance = balance
}
pub fun withdraw(amount: UFix64): @Vault {
self.balance = self.balance - amount
return <-create Vault(balance: amount)
}
pub fun deposit(from: @Vault) {
self.balance = self.balance + from.balance
destroy from
}
}

Добавьте следующую функцию в интерфейс хранилища:

pub fun createEmptyVault(): @Vault {
return <-create Vault(balance: 0.0)
}

Как следует из названия, функция создает пустой ресурс Vault для учетной записи. Баланс равен 0.

Следовательно, теперь нам нужно настроить возможность минтинга. Добавьте следующий код под функцией createEmptyVault:

pub resource VaultMinter {
style="text-align: left;">pub fun mintTokens(amount: UFix64, recipient: Capability&lt;&amp;AnyResource{Receiver}&gt;)
{
let recipientRef = recipient.borrow()
?? panic("Could not borrow a receiver reference to the vault")
PinnieToken.totalSupply = PinnieToken.totalSupply + UFix64(amount)
recipientRef.deposit(from: &lt;-create Vault(balance: amount))
}
}

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

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

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

Теперь нам нужно инициализировать контракт и добавить следующий код после ресурса VaultMinter:

init() {
self.totalSupply = 30.0
self.tokenName = "Pinnie"
let vault &lt;- create Vault(balance: self.totalSupply)
self.account.save(&lt;-vault, to: /storage/MainVault)
self.account.save(&lt;-create VaultMinter(), to: /storage/MainMinter)
style="text-align: left;">self.account.link&lt;&amp;VaultMinter&gt;(/private/Minter, target: /storage/MainMinter)
}

При заключении контракта важно установить общий объем поставки. В этом примере мы инициализировали контракт с поставкой 30 и установили имя токена как «Пинни».

Развертывание и выпуск токенов

Обновите файл flow.json в проекте, чтобы развернуть новый контракт. Убедитесь, что файл flow.json ссылается на новый контракт и содержит ссылку на ключ учетной записи эмулятора:

{
"emulators": {
"default": {
"port": 3569,
"serviceAccount": "emulator-account"
}
},
"contracts": {
"PinataPartyContract": "./cadence/contracts/PinataPartyContract.cdc",
"PinnieToken": "./cadence/contracts/PinnieToken.cdc"
},
"networks": {
"emulator": {
"host": "127.0.0.1:3569",
"chain": "flow-emulator"
}
},
"accounts": {
"emulator-account": {
"address": "f8d6e0586b0a20c7",
"keys": "e5ca2b0946358223f0555206144fe4d74e65cbd58b0933c5232ce195b9058cdd"
}
},
"deployments": {
"emulator": {
"emulator-account": ["PinataPartyContract", "PinnieToken"]
}
}
}

В другом окне терминала в каталоге проекта стороны пината запустите развертывание проекта потока. Теперь давайте протестируем функцию чеканки. Мы создадим транзакцию, которая позволит нам создавать токены Pinnie. Но сначала нам нужно обновить файл flow.json.

Измените json под учетной записью эмулятора:

style="text-align: left;">"emulator-account": {
"address": "f8d6e0586b0a20c7",
"privateKey": "e5ca2b0946358223f0555206144fe4d74e65cbd58b0933c5232ce195b9058cdd",
"sigAlgorithm": "ECDSA_P256",
"hashAlgorithm": "SHA3_256",
"chain": "flow-emulator"
},

Поле ключа становится полем privateKey, и мы добавляем свойства, включая sigAlgorithm, цепочку и hashAlgorithm.

Разработка торговой площадки NFT

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

В папке cadence / контракты создайте новый файл с именем MarketplaceContract.cdc.

import PinataPartyContract from 0xf8d6e0586b0a20c7
import PinnieToken from 0xf8d6e0586b0a20c7
pub contract MarketplaceContract {
pub event ForSale(id: UInt64, price: UFix64)
pub event PriceChanged(id: UInt64, newPrice: UFix64)
pub event TokenPurchased(id: UInt64, price: UFix64)
pub event SaleWithdrawn(id: UInt64)
pub resource interface SalePublic {
style="text-align: left;">pub fun purchase(tokenID: UInt64, recipient: &amp;AnyResource{PinataPartyContract.NFTReceiver}, buyTokens: @PinnieToken.Vault)
pub fun idPrice(tokenID: UInt64): UFix64?
pub fun getIDs(): [UInt64]
}
}

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

  • ForSale: продажа NFT
  • PriceChanged: изменение цены на NFT.
  • TokenPurchased: при покупке NFT
  • SaleWithdrawn: когда NFT удаляются с торговой площадки.

Мы добавили интерфейс ресурса под названием SalePublic под эмиттерами событий. Интерфейс должен быть общедоступным для всех, а не только для владельца контракта.

Нам нужно добавить ресурс SaleCollection под интерфейсом SalePublic. Мы определили несколько переменных в этом ресурсе. Например, отображение токенов для продажи, отображение цен на каждый токен для продажи и защищенная переменная, доступная только владельцу контракта, под названием ownerVault.

Нам нужно инициализировать переменные при их определении на ресурсе. Это выполняется в функции init и инициализируется ресурсом хранилища владельца и пустыми значениями.

Затем важно определить функции для управления действиями торговой площадки NFT. Функции:

  • listForSale
  • changePrice
  • withdraw
  • idPrice
  • purchase
  • destroy
  • getIDs

Как упоминалось выше, три из этих функций общедоступны, это означает, что listForSale, remove, destroy и changePrice доступны только для перечисленных владельцев NFT. Например, changePrice не доступен публично, потому что мы не хотим, чтобы кто-либо менял цену NFT.

Последняя часть рыночного контракта — это функция CreateSaleCollection. Это позволяет добавить коллекцию в качестве ресурса к учетной записи. После написания этого контракта мы развернем его с учетной записью эмулятора. Выполните следующую команду из корня вашего проекта:

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

Как только это будет сделано, нам нужно поработать над интерфейсом и подключить эти контракты с помощью инструмента Flow CLI.

Если вы хотите создать собственную торговую площадку NFT, проконсультируйтесь с нашими экспертами по разработке NFT, которые помогут вам от консультаций до разработки и запуска платформы торговой площадки.

Поддержите блог, перечислив небольшие чаевые

Если у вас нет кошелька MetaMask, вы можете получить его здесь

Заключительные слова

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

Поддержите блог, перечислив небольшие чаевые

Если у вас нет кошелька MetaMask, вы можете получить его здесь

Как работает торговая площадка NFT?

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

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

Where to Find 4K Live Streams of the 2022 FIFA World Cup?

To watch at 4K, you’ll need a computer with at least 25 Mbps of upload speed and a television set that supports the resolution. The BBC iPlayer, ITV Hub, and Fox Sports Go applications will all be able to stream the games.

On a number of its networks, Fubo TV will also stream 4K World Cup programming. If you have a little extra cash to spare, you may use YouTube TV to tune in to the FIFA World Cup in Qatar.

Стек технологий, необходимый для создания торговой площадки NFT

NFT Marketplace on Ethereum Blockchain based on course. Made in React

  • Ethereum (Ethereum — одна из самых популярных платформ, когда дело доходит до рынка NFT или разработки невзаимозаменяемых токенов. Поскольку история транзакций и метаданные токенов доступны для публичной проверки в Ethereum, легче доказать историю владения. Поскольку все продукты Ethereum имеют общий бэкэнд, NFT становятся переносимыми между продуктами. Кроме того, Ethereum никогда не падает; следовательно, токены всегда будут доступны для продажи.)
  • Flow (Flow — это быстрый и децентрализованный блокчейн, разработанный для нового поколения цифровых активов, приложений и игр. Платформа широко используется для создания как торговых площадок NFT, так и NFT с использованием языка программирования Cadence.)
  • Tezos (Tezos — это блокчейн-платформа с открытым исходным кодом для приложений и ресурсов, поддерживаемая сообществом разработчиков, исследователей и валидаторов. Используя предварительно скомпилированный контракт FA2 NFT, написанный на языке смарт-контрактов LIGO, Tezos поддерживает развитие торговых площадок NFT.)
  • Cardano (Cardano — это блокчейн-платформа с технологиями и инструментами, необходимыми для обеспечения непревзойденной безопасности и устойчивости децентрализованных систем и приложений. Он также поддерживает развитие NFT и других цифровых активов.)

  • IPFS — это одноранговый гипермедийный протокол, предназначенный для децентрализованного хранения медиаконтента. Поскольку медиафайл, связанный с NFT, не может храниться непосредственно в цепочке блоков, IPFS может хранить все эти данные.
  • Filecoin — это децентрализованная сеть хранения, разработанная специально для хранения самой важной информации, такой как медиафайлы. Платформа хранения включает в себя все, что потребуется разработчику для начала работы с децентрализованным хранилищем для NFT. Зная о своих преимуществах, Truffle Suite также запустил шаблон разработки NFT с Filecoin Box.
  • Pinata также является одной из популярных платформ для загрузки файлов и управления ими в IPFS. Он предоставляет безопасные и проверяемые файлы для NFT.

  • ERC-721
  • ERC-1155
  • FA2
  • dGoods
  • TRC-721

  • React
  • Angular
  • Vue

В этой статье демонстрируется пример создания торговой площадки NFT с использованием цепочки блоков Flow и сети IPFS Pinata.

Список лучших торговых площадок NFT в 2021 году

Торговая площадка NFT — неотъемлемая часть новой тенденции в индустрии блокчейнов.

Я провел небольшое исследование рынка и выбрал 5 лучших торговых площадок NFT. Вот список некоторых из лучших и лучших торговых площадок NFT, которые могут помочь энтузиастам NFT исследовать новые возможности в ландшафте неизменяемых токенов.

1. OpenSea

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

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

и многое другое.

Интересная особенность OpenSea заключается в том, что эта платформа поддерживает стандартные токены ERC1155 и ERC721.

OpenSea позволяет пользователям покупать, продавать и изучать некоторые известные токены. Такие как Decentraland, Axies, CryptoKitties, имена ENS и другие NFT.

На этой торговой площадке NFT представлено более 700 различных разновидностей проектов. такие как проекты цифрового искусства, карточные игры, системы имен и коллекционные игры.

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

NFT Marketplace on Ethereum Blockchain based on course. Made in React

2. Nifty gateway

Одна из лучших торговых площадок NFT в отрасли.

Nifty Gateway сотрудничает с ведущими создателями, брендами, спортсменами и артистами. Таким образом, партнерство приносит уникальные работы заинтересованным коллекционерам криптоискусства.

Когда дело доходит до рынка криптоискусства, иметь дело с Nifty довольно сложно. На этом рынке NFT лучшие художники, бренды и создатели могут легко получить к нему доступ. Это ведущая торговая площадка NFT, поэтому она поддерживает платежи с помощью кредитных / дебетовых карт и Ethereum.

NFT Marketplace on Ethereum Blockchain based on course. Made in React

3. SuperRare

Многообещающий рынок NFT с лучшими функциями.

На этой торговой площадке пользователи могут торговать уникальными произведениями цифрового искусства. Художник на платформе может создавать подлинные произведения искусства. Затем платформа токенизирует произведение искусства в виде предмета коллекционирования, который подлежит владению и продаже. Многие эксперты хвалят эту торговую площадку NFT за инновационный подход к взаимодействию с искусством, культурой и коллекционированием в Интернете. SuperRare поддерживает монеты Ether и собственную криптовалюту в сети блокчейнов Ethereum.

NFT Marketplace on Ethereum Blockchain based on course. Made in React

4. Rarible

Это простая и удобная торговая площадка NFT с ограниченными препятствиями на пути к признанию художника.

Интересный факт о Rarible — это RARI, его собственный не заменяемый токен. RARI используется для поощрения активных пользователей платформы. Эта платформа работает в сети блокчейнов Ethereum и требует комиссии в размере 2,5% с каждой продажи. Он поддерживает несколько криптовалютных монет, таких как WETH, ATRI, DAI и ETH.

NFT Marketplace on Ethereum Blockchain based on course. Made in React

5. Foundation

Foundation — одна из самых известных и лучших торговых площадок NFT для многих создателей крипто-арта.

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

NFT Marketplace on Ethereum Blockchain based on course. Made in React

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