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?
- Importuje kontrakt ERC721, potocznie zwany tokenem NFT.
- 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. - 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ć. - 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?
- Edytor + kompilator: https://remix.ethereum.org/
- Deployment: rozszerzenie do przeglądarki https://metamask.io/
- Podpięcie i przesyłanie tokenów: aplikacja mobilna z tej samej strony https://metamask.io/
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