Peaky Club

Posted on Apr 19, 2023Read on Mirror.xyz

INFURA NFT Mint Rehber !

Selam dostlar !

  • Metamask rehberimizde burdan gidebilirsiniz INFURA’ya değinmiştik.

  • INFURA Consensys’a ait bir oluşum.

  • INFURA ile bir NFT nasıl oluşturulur bunu anlatmaya çalışacağım.

    Gelin başlayalım.

INFURA!

NFT'leri ve bir NFT oluşturmanın ne anlama geldiğini açıklayacağım. Ayrıca Infura'nın nasıl çalıştığına ve başlamanız için neye ihtiyacınız olduğuna dair yüksek düzeyde bir genel bakış sağlayacağım.

Bu kılavuzun sonunda, bir NFT oluşturmanın gerektirdiği şeyleri ve Infura'nın size uygulama mantığına odaklanmanıza izin vererek kolayca ve hızlı bir şekilde yapmanıza nasıl yardımcı olabileceğini anlayacaksınız.

NFT'ler nedir?

Non-Fungible Token (NFT'ler), sanat eseri, müzik veya içerik gibi belirli bir öğenin sahipliğini temsil eden eşsiz dijital varlıklardır. NFT'ler, değiştirilemez oldukları ve aynı öğe veya değer için takas edilemedikleri için normal jetonlardan farklıdır.

Her NFT eşsizdir ve arz ve talep tarafından belirlenen belirli bir değere sahiptir. Ayrıca, NFT'ler genellikle Ethereum veya Polygon gibi blockchain teknolojilerinde saklanır, böylece dijital varlığın sahipliğini ve otantikliğini doğrulamak için güvenli ve şeffaf bir yol sağlanır.

Bir NFT "basmak" (Mint etmek)

Sadece bir blok zinciri ağı üzerinde yeni ve benzersiz bir NFT oluşturmak anlamına gelir. Bu süreç, tokenın ayrıntılarını içeren bir ERC721 veya ERC1155 akıllı sözleşme oluşturarak başlar.

Ardından, NFT varlıklarını - resimler, müzik veya içerik - ve bunların meta verilerini seçtiğiniz barındırma hizmetine yüklersiniz - daha sonra daha fazla bilgi vereceğiz.

Son olarak, barındırma hizmeti tarafından sağlanan NFT meta veri URI'si ve alıcının adresi ile birlikte, dağıtılmış sözleşmenizdeki mint işlevini çağırarak işlem tamamlanır.

NFT projeleri için varlık ve meta verilerini barındırmak için üç seçenek vardır:

  • AWS gibi merkezi barındırma hizmetleri - sansür dayanıklı değillerdir.

  • On-chain depolama - çok pahalıdır.

  • InterPlanetary File System (IPFS) gibi merkezi olmayan depolama - on-chain depolamadan daha az maliyetlidir ancak sansür dayanıklıdır.

NFT'ler oluşturulurken Infura'nın rolü nedir?

Ethereum, Polygon veya Arbitrium'da bir NFT akıllı sözleşmesi dağıtmak veya IPFS'te NFT varlıklarını ve meta verilerini barındırmak için bu ağlara bir bağlantıya ihtiyacınız olacaktır. Ancak, bu bağlantıları sağlamak karmaşık ve pahalı sunucu yazılımı (düğümler) çalıştırmayı gerektirir ve hata yapma olasılığı yüksektir.

Infura, blockchain düğümlerinin işletme ve bakımıyla uğraşmadan hızlı bir şekilde geliştirmeye başlamak için sağlam ve kullanımı kolay API'ler sunarak bu sorunları çözer.

Bugün itibariyle, Infura Ethereum, IPFS, Filecoin, Polygon, Arbitrum, Avalanche, Optimism, Celo, Near, Aurora ve StarkNet gibi 11 ağı desteklemektedir.

Teorilerin çoğunu hallettiğimize göre, NFT'ler oluşturmayı ve basmayı başlamak için doğrudan konuya girelim!

NFT oluşturmak için gereksinimler

Bu rehberi takip etmek için aşağıdaki gereksinimlere sahip olmanız gerekiyor:

  • Node.js'in yüklü olması.

  • Truffle'ın yüklü olması. Terminal’e bu kodu yazıp indirin.

npm install truffle -g

Bunlar hazırsa başlayalım.

NFT akıllı sözleşmesi nasıl yazılır?

Başlamak için, NFT akıllı sözleşmelerini barındırmak için bir Truffle projesine ihtiyacımız olacak. Truffle, akıllı sözleşmeleri önceden tanımlanmış ağlara kolayca oluşturmanızı, derlemenizi ve dağıtmanızı sağlar. Bizim durumumuzda, NFT'mizi Goerli test ağına dağıtacağız ve bir sonraki bölümde Truffle'ı bunu yapmak için kuracağız.

Aşağı kodları tek tek Terminal’e giriyoruz.

truffle init infura-nft-project
cd infura-nft-project
truffle create contract InfuraNFTProject

Bu projenin akıllı sözleşmesini hızlı bir şekilde geliştirmek için OpenZeppelin'in sözleşme sihirbazını kullanacağız. OpenZeppelin'in uygulamalarına dayalı akıllı sözleşmeler için interaktif bir üretici olan bu sihirbazla birkaç kutuyu işaretleyeceğim ve sihirbaz tarafından oluşturulan sözleşmeyi InfuraNFTProject.sol dosyasına kopyalayıp derleyeceğim.

https://docs.openzeppelin.com/contracts/4.x/wizard?ref=infura.ghost.io

Benim yazdığım ve tıkladığım şeylerin aynısı yapın.

  • Name : InfuraNFTProject

  • Symbol : INP

  • “Minatable - Auto Increment Ids” tikini açın

  • “URI Storage” tikini açın

Bu sözleşmeyi başarılı bir şekilde derlemek için dosyanın başında listelenen bağımlılıkların doğru şekilde yüklendiğinden emin olmamız gerekecek.

Devam edin ve OpenZeppelin'in sözleşme kitaplığını şu komutla kurun (Daha demin truffle üstünde Infura dosyası oluşturmuştuk ordan devam edin kapatmayın)

 npm install -dev @openzeppelin/contracts

Daha sonra Visual code açıyoruz. InfuraNFTProject.sol içine giriyoruz ve openzeppel’in oluşturduğumuz kodu kopyalıyoruz ve burayı komple değiştiriyoruz ve kaydet diyoruz.

Bu şekilde olacak.

Şimdi aşağıki kodu terminal’de çalıştırın.

truffle compile

Bu şekilde çıktı alacaksınız.

NFT akıllı sözleşmemizi Goerli Test ağına deploy yapmak!

Akıllı sözleşme başarıyla derlendiğinde, bir sonraki adım, NFT'yi basabilmemiz ve MetaMask mobil cüzdanımızda görebilmemiz için onu genel bir ağa dağıtmaktır.

Şimdi Visual code studio açıyoruz. Açma diyorum.

Yukarda oluşturduğumuz Infura nft project açıyoruz ve seç diyoruz.

Migrations klasörüne sağ tık yapıyoruz.

Yeni dosya oluştur diyoruz. Adını 1_deploy_contracts.js koyuyoruz ve enter basıyoruz.

Dosya oluştu şimdi içine girip sağ tarafta açılan kod yerine verceğim kodu yazıyoruz.

// 1_deploy_contracts.js
const InfuraNFTProject = artifacts.require("InfuraNFTProject");

module.exports = function (deployer) {
    deployer.deploy(InfuraNFTProject);
};

Son görünüm bu şekilde olacak ve kaydet diyoruz.

İkinci adım,

NFT'nizi dağıtmak istediğiniz blok zinciri ağına erişmektir. Goerli gibi bir halka açık ağa erişimimize yardımcı olmak için Infura'yı kullanacağız. Infura gibi bir araçla, kendi düğümümüzü seçtiğimiz ağda kurup sürdürmek zorunda kalmayacağız, bu oldukça zahmetli bir iş.

Infura, Goerli dahil birçok ağ için düğümleri kurup sürdürerek, kamusal blok zincirine erişebileceğimiz bir uç nokta sağlayarak bize zaman ve enerji tasarrufu sağlar.

Infura paneline gidin ve Web3API altında yeni bir proje oluşturun ve proje anahtarlarınızı alın. Ethereum kartında, benzersiz Goerli proje uç noktanızı ortaya çıkarmak için Goerli'yi seçin.

Dashboard gittikten sonra create new apı key diyoruz.

  • Web3 API seçiyoruz.

  • Name : Infura-nft-project

Create diyoruz.

Oluşturduktan sonra endpoints tıklıyoruz.

ETH Mainnet’ten Goerli ağına geçiyoruz. Burda kalıyoruz şimdi bu şekilde.

Infura'nın API'sini kullanarak smart contract'ı Goerli ağına başarıyla dağıtmak için, işlemleri bizim adımıza imzalayacak bir sağlayıcı kurmamız gerekecek.

Bunu yapmanın bir yolu, MetaMask cüzdanınızdan mnemonik tohum ifadenizi almak ve onu Truffle'a girmek olacaktır. Bunun alternatifi ve daha kolay bir yöntem, Truffle panosunu kullanmaktır; bu panodaki işlemler MetaMask cüzdanınıza yönlendirilecek ve özel anahtarlarınızın ortaya çıkarılması gerekmeyecektir.

Bu eğitimin amacı, detaylara inmek ve işlerin nasıl çalıştığını göstermek olduğundan, ilk yaklaşımı kullanacağız. Bu yaklaşım, Infura proje paneli aracılığıyla işlemleri izleme olanağı da sağlar.

MetaMask cüzdanınıza gidin ve sağ üst köşedeki profil simgesine tıklayın -> Ayarlar -> Güvenlik ve Gizlilik -> Gizli Kurtarma İfadesini Göster -> Parolanızı girin ve gizli kurtarma ifadenizi kopyalayın.

Şimdi Visual Code üstünde sağ üstte yeni dosya oluştura basın ve dosya adını .env (Başında Nokta İşareti Var) olarak koyup enter basın.

Daha sonra bu kodu .env içine yapıştırın ve gerekli yerleri düzeltin.

Mnemonıc metamask 12 kelimeniz. (Kimse ile paylaşmayın.) (Burda yapılan işlemler kendi pcniz olduğu için ve kendi NFT’nizi yarattığınız için risk arz etmemektedir)

FAKAT BOŞ CÜZDAN 12 KELİME KULLANMANIZ ŞİDDETLE TAVSİYE OLUNUR

Infura key kısmını siteden alacağız.

// .env file
MNEMONIC="YOUR METAMASK SECRET RECOVERY PHRASE"
INFURA_API_KEY="YOUR INFURA_API_KEY"

Dashboard kısmında endpoints kısmında apı key kopyalayıp yukardaki yere yapıştırıp düzeltin. Yukardaki bilgileri full girdikten sonra kaydet diyin.

Artık yukardakiler hazır olduğuna göre, truffle-config.js dosyasını güncelleyelim ve Goerli ağını tercih ettiğimiz ağ olarak yapılandıralım. Aşağıdaki kodu dosyanın içine yapıştıracağız.

// truffle-config.js file
require("dotenv").config();
const { MNEMONIC, INFURA_API_KEY } = process.env;

const HDWalletProvider = require("@truffle/hdwallet-provider");

module.exports = {
  networks: {
    goerli: {
      provider: () =>
        new HDWalletProvider(
          MNEMONIC,
          `https://goerli.infura.io/v3/${INFURA_API_KEY}`
        ),
      network_id: 5, // Goerli's network id
      chain_id: 5, // Goerli's chain id
      gas: 5500000, // Gas limit used for deploys.
      confirmations: 2, // # of confirmations to wait between deployments. (default: 0)
      timeoutBlocks: 200, // # of blocks before a deployment times out  (minimum/default: 50)
      skipDryRun: true, // Skip dry run before migrations? (default: false for public nets)
    },
  },

  // Set default mocha options here, use special reporters, etc.
  mocha: {
    // timeout: 100000
  },

  // Configure your compilers
  compilers: {
    solc: {
      version: "0.8.17", // Fetch exact version from solc-bin (default: truffle's version)
    },
  },
};

Visual code üstünde truffle-config.js dosyasını açıyoruz.

Yukardaki kodu kopyala yapıştır yapıyoruz ve kaydet diyoruz.

Önemli olan açılan yerde yazılan kodların en altına yapıştırmak lütfen dikkat edin!

Bunun çalışması için, yapılandırma dosyasında başvurulan dotenv ve truffle/hdwallet-provider bağımlılıklarını indirmemiz gerekecek.

Aşağıdaki kodu terminal kısmına yazın. Biraz bekleyeceğiz yüklenmesini.

npm install -dev dotenv @truffle/hdwallet-provider

Artık her şey ayarlandığına göre, akıllı sözleşmeyi şu basit komutla Goerli ağına dağıtabiliriz

truffle migrate --network goerli

Evet bu şekilde çıktı alacaksınız. TX kısmına bakabilirsiniz.

NFT varlıklarını ve meta verilerini Infura aracılığıyla IPFS'ye yükleme!

Infura'nın hayatımızı kolaylaştırdığı bir başka yer de, Infura dashboard üzerinden IPFS'ye erişim sağlamasıdır. Infura dashboard gidin ve bir IPFS projesi oluşturun.

Create new apı key tıklıyoruz.

Network IPFS

Name : infura-nft-project-assets

En son create diyoruz.

Açılan yerde kredi kartı bilgilerini giriyoruz. Sanal kart girin oluyor. 5 GB’e kadar ücretsiz kullanım sunuyor. Zaten deneme için yapacağımız için bu depolamayı geçmeyeceğiz. Sonra kartınızı kaldırabilirsiniz.

Kart bilgilerini girdikten sonra sağ tarafta create project diyoruz.

Bu şekilde sayfa geliyor karşımıza. Bize lazım olan API KEY ve API SECRET KEY. Sayfa açık kalsın geri döneceğiz.

Daha sonra kendimize bir resim .jpg şeklinde ayarlıyoruz. Bu resim masaüstünde olacak farklı bir yerde değil.

Resim ismi InfuraNFT.jpg olacak. Şimdi yükleyeceğimiz resimin bulunduğu adresi alın.

Örnek /Users/PC İsmi/Desktop/InfuraNFT.jpg benim macOS olduğu için bu şekilde windows kullananların şekli farklıdır. Ama neye bakacağınızı söyledim. Aşağıdaki resimde örnekleri var.

Şimdi aşağıki kodu kendinize göre değiştirin ve terminal’e yapıştırın. (Terminal’i sıfırdan baştan açın.)

curl "https://ipfs.infura.io:5001/api/v0/add" \
-X POST \
-F file=@"/Users/ecox/Desktop/InfuraNFT.jpg" \
-u "API-Key:API-Key-Secret"

Sizin değiştireceğiniz yerler

-F kısmındaki "/Users/ecox/Desktop/InfuraNFT.jpg" kesme işareti içindeki yer. Kendi resim yolunuzu buraya yapıştırın.

-u kısmındaki "API-Key:API-Key-Secret" kesme işareti içindeki bilgiler. Yukarda IPFS oluşturmuştuk ordaki bilgileri buraya yapıştırın. : işareti kalacak aradaki silmeyin!

Size vereceği çıktı bu şekilde olacaktır.

{"Name":"InfuraNFT.jpg","Hash":"QmVFFUMgMtLLzmbN9FJFPQtrgi1wUA6ejKnmECpoDbgAHv","Size":"1996850"}

Görüntüyü yanıttan kopyalayın ve bir sonraki adımda kullanacağımız için bir yerde saklayın.

Sırada, yeni yüklediğimiz NFT görüntüsünü açıklayan bir JSON dosyası oluşturmak ve yüklemek var. NFT'mizi bastıktan sonra Opensea'de görebilmemizi sağlamak için Opensea standardını izleyeceğiz.

Şimdi visual code uygulamasına giriyoruz ve yeni dosya oluştur diyoruz.

İsmini InfuraNFT.json koyuyoruz ve enter basıyoruz.

Daha sonra aşağı kodu InfuraNFT.json içine yapıştırıyoruz.

{
    "name": "Infura NFT",
    "description": "How to mint an NFT with Infura tutorial",
    "image":   "DEDICATED GATEWAY SUBDOMAIN/ipfs/NFT IMAGE HASH", // e.g  "https://infura-nfts.infura-ipfs.io/ipfs/QmRmUJiwcKSp2Tq5MdNvkkuQFktbeEgJHwfv9SbYX6uhGk"
    "attributes": [
    { "trait_type": "content", "value": "tutorial"},
    { "trait_type": "product", "value": "Infura"},
    { "trait_type": "author", "value": "Kingsley"}
    ]
}

Şimdi burda yapacaklarımız var. Yukarda API KEY ve API SECRET KEY olan yerde aşağı iniyoruz ve enable dedicated gateways yerine geliyoruz. Ben ecox yazdım siz kendiniz istediğinizi yazabilirsiniz ve save subdomain diyoruz. Bu adresi kullanacağız.

Şimdi json dosyasının içinde "DEDICATED GATEWAY SUBDOMAIN/ipfs/NFT IMAGE HASH" kısmı var. Burda subdomain yazan yere yukardaki adresimizi yazacağız. Komple kopyalayın. NFT Image Hash yazan yerede demin resim yüklemiştik ve size çıktı vermişti kaydedin kullanacağız demiştim. Ordaki Hash kodunu alın ve değiştirin.

Olması gereken örnek

"https://ecox.infura-ipfs.io/ipfs/QmVBMUMgMtLLzmbN9FJFPQtrgi1wUA6ejKnmECpoDbgAHv"

Dosyayı kaydedin yaptıysanız.

Şimdi visual code uygulamasının terminal’ine gelin ve aşağıdaki kodu yazın.

curl "https://ipfs.infura.io:5001/api/v0/add" \
-X POST \
-F file=@"InfuraNFT.json" \
-u "API-Key:API-Key-Secret"

Değiştirmeniz gereken yer

-u kısmındaki "API-Key:API-Key-Secret" kesme işareti içindeki bilgiler. Yukarda IPFS oluşturmuştuk ordaki bilgileri buraya yapıştırın. : işareti kalacak aradaki silmeyin!

Alacağınız çıktı bu şekilde olacaktır.

Bunları doğru bir şekilde yaptıysanız, Infura IPFS kontrol panelinizde sabitlenmiş iki öğeniz olmalıdır. Yukardan IFPS basın ve onun altındaki oluşturduğumuz assets dosyasını seçin.

Bitti mi ? Devam ediyoruz.

NFT akıllı sözleşmesinde Mint işlevini çağırma!

Dağıtılan NFT sözleşmesi ve IPFS'ye yüklenen görüntü varlığı ve meta verilerle, mint işlevini çağırmaya ve bu NFT'yi bir Ethereum adresine atamaya hazırız.

Şimdi visual code proje içindeki terminal’a giriyoruz ve aşağıdaki kodları aynı anda yapıştırıyoruz enter basıyoruz. Truffle içine girmiş olacağız.

source .env
truffle console --network goerli

Bu şekilde olacak.

Şimdi aşağıdaki kodu gerekli yerleri değiştirip visual code terminal’inde yapıştır yapıp enter basacağız.

const contract = await InfuraNFTProject.deployed()
await contract.safeMint("RECIPIENT’S ADDRESS", "DEDICATED GATEWAY SUBDOMAIN/ipfs/NFT METADATA FILE HASH")

Değiştirilmesi gereken yerler

  • "RECIPIENT’S ADDRESS" buraya cüzdan adresinizi yazacaksınız.

  • "DEDICATED GATEWAY SUBDOMAIN buraya daha demin yukarda yazdığımız subdomain ismimizi yazacağız.

    Örnek - https://ecox.infura-ipfs.io

  • NFT METADATA FILE HASH" buraya InfuraNFT.json dosyasını yüklediğimiz hash kodunu alıp yapıştıracaksınız.

Yukardaki kodu komple kopyalayıp visual code programın terminal’ine yapıştırıp bekleyin.

Böyle bir çıktı alacaksınız işlem tamamdır sonunda.

Artık opensea testnet üstünde NFT'imizi görebiliriz kontrol edelim

Burdan testnet opensea sitesine gidelim.

https://testnets.opensea.io

Evet benim gelmiş.

Burdan goerli scan üstündende kontrol edebilirsiniz.

https://goerli.etherscan.io

İşlemlerim gözüküyor sizde kontrol edin.

Sonuç: Artık bir NFT'nin nasıl oluşturulacağını biliyorsunuz Bu kadar!

Bir ERC 721 belirteci yazdınız ve dağıttınız, Infura'nın API'lerini kullanarak IPFS'ye bir NFT görüntüsü ve meta veri yüklediniz ve bu NFT'yi Truffle konsolunu kullanarak bir alıcının adresine atamak için NFT sözleşmenizdeki mint işlevini çalıştırdınız. Infura'ya güvenmenin, uygulamanıza odaklanmanıza izin vererek üretkenliğinizi nasıl büyük ölçüde artırabileceğini görebilirsiniz; Infura ise düğümlerinizi yönetir ve istekleri gerçek zamanlı olarak izlemeniz için size sağlam bir dashboard sağlar.

REHBER BU KADARDI OKUDUĞUNUZ İÇİN TEŞEKKÜR EDERİM. YAKLAŞIK 4-5 SAAT EMEK VERDİM. ŞİMDİDEN TEŞEKKÜR EDİYORUM.

                      PeakyLab & PeakyClub

subscribe://

collect://