Napisz swoje własne NFT, pomogę Ci!

Ok, no to najpierw kodzik.

Tak to wszystko, czego potrzebujesz, dlatego że korzystam z biblioteki ze smart kontraktami OpenZeppelin, dlatego wystarczy jeden import z GitHuba.

Kodzik wygląda tak:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "https://raw.githubusercontent.com/OpenZeppelin/openzeppelin-contracts/release-v4.0/contracts/token/ERC721/extensions/ERC721URIStorage.sol";

contract NftToken is ERC721URIStorage {
    constructor() ERC721("NftToken", "NFT") {
        _safeMint(_msgSender(), 42);
        _setTokenURI(42, "tesla model3; 5YJ3E1EA5KF999999");

        _safeMint(_msgSender(), 24);
        _setTokenURI(24, "https://twitter.com/kilgallon84/status/1367270096415121409?s=20");
    }
}

Co ten kodzik robi?

  1. Importuje kontrakt ERC721, potocznie zwany tokenem NFT.
  2. Tworzy nowy kontrakt, który jest rozszerzeniem ERC721.
    Jak widzisz, nie jest to podstawowy tokena, ale z małym dodatkiem, pozwalającym zapisać dodatkową informację dla każdego z tokenów.
  3. Opisuje, co ma się stać w momencie, gdy kontrakt będzie tworzony.
    Ta zmiana jest potrzebna, żeby przy okazji tworzenia kontraktu dodać kilka tokenów, którymi potem będzie można się pobawić.
  4. Ten token będzie wyjątkowo rzadki 🙂
    Będą tylko 2 tokeny, jeden reprezentujący samochód o konkretnym numerze VIN, a drugi odnoszący się do wiekopomnego tweeta.
    Żeby było wiadomo, który jest który, podczas tworzenia tokenów dopisuję tę informację do tokena.

Ostatnia kwestia to, kto będzie właścicielem na początku?
Pewnie widzisz _msgSender() w kodzie, który tworzy nowy token, to właśnie właściciel.
Kim jest ten sender?
To osoba, która stworzy kontrakt.

Kontrakt, który widzisz wyżej jest wrzucony na sieć testową ETH – Ropsten.

Możesz go zobaczyć tutaj:

https://ropsten.etherscan.io/token/0x36b48f0fb730633e45a7d24f26968eea3f40a0ca

A teraz po kolei, jak to się robi?

Najpierw potrzebujesz narzędzi, które pozwolą ci napisać, skompilować, zdeployować a na końcu używać smart kontrakt.

Jakich narzędzie użyłem?

Najpierw odpalasz remixa, to co zobaczysz to po pierwszym włączeniu edytora to 3 przykładowe kontrakty, usuń je i dodaj nowy plik, pn. nft.sol

Potem napisz swój smart kontrakt, np. taki jak widzisz na początku tego posta.

U mnie wygląda to tak:

No to już połowa sukcesu 🙂

Teraz trzeba jeszcze skompilować i odpalić. Do tego przyda ci się druga zakładka od góry „solidity compiler”
Najpierw wybierz wersję kompilatora, ja wziąłem 0.8.2, czyli najnowszy.
Potem kliknij wielki niebieski przycisk z napisem Compile

Masz już skompilowany smart kontrakt, teraz przydałoby się go odpalić, do tego służy trzecia zakładka: „Deploy & run transactions”

To, co teraz musisz zrobić to nacisnąć wielki pomarańczowy przycisk Deploy. Jeśli wszystko się udało to masz u siebie w przeglądarce odpalonego sandboxa, w którym możesz testować smart kontrakt.

Na dole pod przyciskiem Deploy powinien pojawić ci się napis „Deployed Contracts”, a pod nim zobaczysz swój kontrakt. U mnie wygląda to tak:

Po kliknięciu zobaczysz wszystkie polecenia, które możesz wykonać na swoim kontrakcie

Przewiń do pola tokenURI i wpisz jedno z id tokenów (24 lub 42), a potem kliknij, na przycisk tokenURI, zobaczysz co jest zapisanie na blockchainie dla konkretnego tokena

Fajnie, co?

To teraz jeszcze druga część, wrzucenie tokena na sieć testową i podpięcie go do portfela, ale o tym napiszę w kolejnym poście

Jeśli nie chcesz go przegapić, dołącz do newslettera na https://chaindev.pl/m