Avalance ağı üzerinde NFT yaratabilmemiz için öncelikle node kurmamız gerekiyor. İsterseniz, Google Cloud (300$), Microsoft Azure(1400 TL) üzerinden belirtilen limitler dahilinde bir tane VM (Sanal Makine) oluşturarak Avalanche node çalıştırabilirsiniz.
Ben testnet çalışmaları sırasında tüm limitlerimi kullandığım için bu sefer Microsoft Azure üzerinden node çalıştırdım. (Bedava limiti üzerinden saatlik 0.35 TL kesinti oluyor)
Sanal Makine Özellikleri
- İşletim sistemi: Linux (ubuntu 18.04)
- Boyut: Standart B2s (2 vcpu sayısı, 4 GiB bellek)
- Premium SSD
Avalance NODE kurulumu
Sanal makinemize verilen IP üzerinden SSH ile bağlantıktan sonra, açılan uç birim penceresindeki ilk satıra aşağıdaki komutları tek tek yazarak node kurmaya başlıyoruz.
Aşağıda 4 ayrı komut satırı yer almaktadır.
1 2 3 4 |
wget https://github.com/ava-labs/avalanchego/releases/download/v1.0.5/avalanchego-linux-v1.0.5.tar.gz tar -xvf avalanchego-linux-v1.0.5.tar.gz cd avalanchego-v1.0.5 nohup ./avalanchego & |
“nohup ignoring input and appending output to ‘nohup.out’” şeklinde bir uyarı alacaksınız. Bu node’un arka planda çalışmaya başladığını gösterir. enter veya cntrl+c yaparak komut satırının normal haline dönmesini sağlayabilirsiniz.
Biz, nohup ./avalanchego & komutunu kullanarak node’un arka planda çalışmasını sağladık. Ancak işlemlerimizi yapabilmek için öncelikle node’un önyüklemeyi tamamlaması gerekir. Bu işlem de 1-2 saati bulabilmektedir. O nedenle ön yüklemenin (bootsrap) tamamlanıp tamamlanmadığını kontrol etmek için aşağıdaki komutu kullanabiliriz.
1 2 3 4 5 6 7 8 |
curl -X POST --data '{ "jsonrpc":"2.0", "id" :1, "method" :"info.isBootstrapped", "params": { "chain":"X" } }' -H 'content-type:application/json;' 127.0.0.1:9650/ext/info |
Eğer önyükleme tamamlandı ise yanıt aşağıdaki gibi olmalıdır.
1 2 3 4 5 6 7 |
{ "jsonrpc": "2.0", "result": { "isBootstrapped": true }, "id": 1 } |
1- NODE ID alma
1 2 3 4 5 |
curl -X POST --data '{ "jsonrpc":"2.0", "id" :1, "method" :"info.getNodeID" }' -H 'content-type:application/json;' 127.0.0.1:9650/ext/info |
Bu komut ile size özel bir NODE ID oluşturulmuş olacaktır.
1 2 3 4 5 6 7 |
{ "jsonrpc": "2.0", "result": { "nodeID": "NodeID-MunvpSL6RWc4zzTof6witoDMSavaN4T2o" }, "id": 1 } |
Eğer validator olmak isterseniz bu aşamadan sonra Avalanche TR grubundan Selim hocamın makalesindeki “Adım 1 — Avalanche Cüzdanını Açın” başlığından itibaren diğer tüm adımları takip ederek validatör olabilirsiniz.
Biz NFT oluşturmak için işlemlerimize kaldığımız yerden devam edebiliriz.
2- USER ID oluşturma
1 2 3 4 5 6 7 8 9 |
curl -X POST --data '{ "jsonrpc":"2.0", "id" :1, "method" :"keystore.createUser", "params" :{ "username":"Kullanıcı Adı", "password":"Kullanıcı Şifresi" } }' -H 'content-type:application/json;' 127.0.0.1:9650/ext/keystore |
Kullanıcı adı ve şifresi kısmına kendi ürettiğiniz adı ve şifreyi yazmanız gerekmektedir. Yanıt aşağıdaki şekilde olacaktır.
1 2 3 4 5 |
{ "jsonrpc":"2.0", "result":{"success":true}, "id":1 } |
3- X-CHAIN adres oluşturma
Yukarıda oluşturduğumuz kullanıcı adı ve şifresi ile X-Chain adresi oluşturacağız ve NFT yaratma işlemlerinde bu adresi kullanacağız.
1 2 3 4 5 6 7 8 9 |
curl POST --data '{ "jsonrpc":"2.0", "id" :1, "method" :"avm.createAddress", "params" :{ "username": "Kullanıcı Adı", "password": "Kullanıcı Şifresi" } }' -H 'content-type:application/json;' 127.0.0.1:9650/ext/bc/X |
Aşağıda görüldüğü şekilde bir X-Chain adresi oluşturulacaktır. Bu adresi bundan sonraki diğer komutlarda da kullanacağız. O nedenle not edin.
1 2 3 4 5 6 7 |
{ "jsonrpc":"2.0", "id":2, "result" :{ "address":"X-avax166tq5lvx58ahqtjke6ftd543ltpzcj2mf0y882" } } |
Kendi kontrolünüz altında yani seed kelimeleri ve/veya json dosyası olan bir AVAX cüzdan adresiniz varsa onu da yukarıda oluşturduğumuz X-Chain adresi ile birlikte ilgili komutlarda kullanacağız. Ama yoksa, https://wallet.avax.network/ sayfasındaki Create New Wallet üzerinden yeni bir cüzdan adresi oluşturup ilgili seed kelimelerini güvenli bir yerde saklayabilirsiniz. Lütfen güvenlik kelimelerini ve json dosyanızı hiç kimse ile paylaşmayın.
Şimdi NFT yaratma işlemlerine başlayabiliriz.
NFT Oluşturma Adımları
NFT’ye konu olacak resmi png formatında kaydedip, hiçbir şekilde silinmediğinden emin olduğumuz bir yere upload ediyoruz. Avalanche TR Telegram grubundan Mahof hocam buradaki makalesinde imgbb.com‘u tavsiye ettiği için ben de ilk NFT resmimi oraya upload ettim. (Makale’de ve diğer kaynaklarda minimum ve maksimum resim boyutlarının ne olması gerektiği konusunda herhangi bir bilgi bulamadığım için net ve kaliteli görüntü almak adına 1024*1024 ebatlarında save ettim ve imgbb’ye yükledim.)
Sitede verilen kısaltılmış linke tıklayıp, png uzantılı resim linkini aldım ve bu linki de https://play.golang.org/p/ItZqPyxBETn linkindeki hazır script üzerinde ilgili yere yapıştırdım. Sayfanın üst kısmında yer alan RUN butonuna bastıktan sonra bize PAYLOAD üretecek. gLK5XsnZJb3gnRYDpsnwhj. gibi) Node üzerinde yapacağımız işlemlerde bu kodu da kullanacağız, lütfen not alın.)
NFT yaratma sırasında fee ödemek zorunda kalıyoruz. Bu nedenle de node üzerinden oluşturduğumuz X-Chain adresine bir miktar AVAX göndermemiz gerekiyor. Ben yeniden NFT üreteceğim için 1 AVAX gönderdim. Ancak siz aşağıdaki bilgiye istinaden net hesaplama yapıp öyle gönderim sağlayabilirsiniz. AVAX gönderme işleminizi https://wallet.avax.network/ üzerinden yapabilirsiniz.
- creatNFT için; 0.01 AVAX
- mintNFT için 0.001 AVAX
- sendNFT için 0.001 AVAX
Şimdi de web wallet üzerinden gönderdiğimiz AVAX’ların node üzerinde açtığımız X-Chain adresine ulaşıp ulaşmadığını kontrol edelim.
1 2 3 4 5 6 7 8 9 |
curl -X POST --data '{ "jsonrpc":"2.0", "id" :3, "method" :"avm.getBalance", "params" :{ "address":"Node üzerinden açtığınız X-Chain adresi buraya yazılacak", "assetID" :"AVAX" } }' -H 'content-type:application/json;' 127.0.0.1:9650/ext/bc/X |
Yanıtta web wallet üzerinden gönderim yaptığınız bakiyeyi ve üretilen txId’yi görmeniz gerekiyor.
Bu şekilde :{“balance”:”1034968611″,”utxoIDs”:[{“txID”:”2QBooPSZ6F154hQVSZizdVGrgxfmge4ngwVXKWXCKHYtMfuH5A”,”outputIndex”:0}]}
Evet, saniyeler içinde node cüzdanıma yansıdı ve gönül rahatlığı ile işlemlerime devam edebilirim.
1- NFT için assedID Oluşturmak
Aşağıdaki komut oldukça uzun görünebilir ama kafanızın karışmasını gerektirecek hiçbirşey yok, merak etmeyin. Bize gerekli olanlar;
- (İlk yazacağımız adres) Node üzerinde ürettiğimiz X-Chain adresi
- (ikinci yazacağımız adres) Web wallet üzerinde ürettiğimiz ve güvenlik kelimeleri elimizde olan X-Chain adresi…
Hatırlatma: Ben 10 adet NFT üreteceğim için komut satırını da o oranda çoğalttım. Ayrıca bu komutu kendi bilgilerinizle düzenledikten sonra tek seferde yapıştırmalısınız. Lütfen bu detayı atlamayın.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
curl -X POST --data '{ "jsonrpc":"2.0", "id" : 1, "method" :"avm.createNFTAsset", "params" :{ "name":"NFT ailesine verdiğiniz isim", "symbol":"XXXX", "minterSets":[ { "minters":[ "NODE üzerinde üretilen X-Chain adresi","Web wallet üzeride ürettiğiniz kontrolü sizde olan X-Chain adresi" ], "threshold": 1 }, { "minters":[ "NODE üzerinde üretilen X-Chain adresi","Web wallet üzeride ürettiğiniz kontrolü sizde olan X-Chain adresi" ], "threshold": 1 },{ "minters":[ "NODE üzerinde üretilen X-Chain adresi","Web wallet üzeride ürettiğiniz kontrolü sizde olan X-Chain adresi" ], "threshold": 1 },{ "minters":[ "NODE üzerinde üretilen X-Chain adresi","Web wallet üzeride ürettiğiniz kontrolü sizde olan X-Chain adresi" ], "threshold": 1 },{ "minters":[ "NODE üzerinde üretilen X-Chain adresi","Web wallet üzeride ürettiğiniz kontrolü sizde olan X-Chain adresi" ], "threshold": 1 },{ "minters":[ "NODE üzerinde üretilen X-Chain adresi","Web wallet üzeride ürettiğiniz kontrolü sizde olan X-Chain adresi" ], "threshold": 1 },{ "minters":[ "NODE üzerinde üretilen X-Chain adresi","Web wallet üzeride ürettiğiniz kontrolü sizde olan X-Chain adresi" ], "threshold": 1 },{ "minters":[ "NODE üzerinde üretilen X-Chain adresi","Web wallet üzeride ürettiğiniz kontrolü sizde olan X-Chain adresi" ], "threshold": 1 },{ "minters":[ "NODE üzerinde üretilen X-Chain adresi","Web wallet üzeride ürettiğiniz kontrolü sizde olan X-Chain adresi" ], "threshold": 1 },{ "minters":[ "NODE üzerinde üretilen X-Chain adresi","Web wallet üzeride ürettiğiniz kontrolü sizde olan X-Chain adresi" ], "threshold": 1 } ], "from": ["NODE üzerinde üretilen X-Chain adresi"], "changeAddr": "NODE üzerinde üretilen X-Chain adresi", "username":"Kullanıcı Adı", "password":"Kullanıcı Şifresi " } }' -H 'content-type:application/json;' 127.0.0.1:9650/ext/bc/X |
Eğer komut içinde herhangi bir hata yapmamışsanız size assetID verecektir.
2- NFT Mint işleminin yapılması
Bu komutta özellikle şu konuya dikkat etmemiz gerekiyor; aşağıdaki komutun ilk satırında for n in {1..10}; do döngüsünü kullandık. Eğer 10 adetten daha az NFT yaratmışsanız buradaki döngü örneğin, 5 adet için for n in {1..5}; do şeklinde olmalıdır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
for n in {1..10}; do curl -X POST --data '{ "jsonrpc":"2.0", "id" : 1, "method" :"avm.mintNFT", "params" :{ "assetID":"NFT ailesi için ürettiğiniz assedID buraya yazılacak","changeAddr":"NODE üzerinde üretilen X-Chain adresi", "payload":"png formatlı resim için ürettiğimiz PAYLOAD kodu buraya yazılacak", "from": ["NODE üzerinde üretilen X-Chain adresi"], "to":"Web wallet üzeride ürettiğiniz kontrolü sizde olan X-Chain adresi", "username":"Kullanıcı Adı", "password":"Kullanıcı Şifresi" } }' -H 'content-type:application/json;' 127.0.0.1:9650/ext/bc/X ; sleep 2; done |
Eğer komut yapısında bir hata yapmamış iseniz yanıtta 10 adet txID görmeniz gerekir.Tebrikler, böylece ilk NFT ailesini oluşturmuş oldunuz.
3- Başka bir kullanıcıya NFT göndermek
Eğer başka kullanıcılara yaptığınız bu NFT’lerden göndermek istiyorsanız https://wallet.avax.network/üzerinden web cüzdanınıza giriş yapmanız gerekmektedir. Bu işlem için de aşağıdaki ekranları takip edebilirsiniz.
(Ben NFT oluşturma aşamasında yol gösterici bir makale hazırladığı için Mahof hocama NFT gönderdim. Eğer sizde oluşturduğunuz NFT’lerinizden bana göndermek isterseniz AVAX adresim: X-avax1tplwzcpw2pnre3we82egryxr7twr7qty6c6cyj )
Kaynaklar:
- Kripto Koleksiyonlukları ve Eşsiz Tokenlar (NFT) Rehberi
- Avalanche Platformunda NFT Nasıl Hazırlanır