Tutorial: mint and transfer your own ERC-721(NFT) tokens
Last updated
Last updated
Mint an ERC-721 token to represent your digital asset on the Oasis Ethereum ParaTime, and send this newly minted unique token to friends and family! Could worth millions one day, who knows?
This tutorial will walk you through the following tasks.
How to deploy an ERC-721 smart contract on Oasis Ethereum ParaTime Mainnet.
Mint an ERC-721 token with an associated digital asset.
Transfer the ERC-721 Token to another person.
ERC721 tokens, more commonly known as Non-Fungible tokens (NFTs), have captured developers’ imagination since it was first introduced as an EIP in September of 2017. Non-Fungible tokens allow issuers to tokenize the ownership of digital assets, drastically increasing the design space of what can be represented as a token on the Ethereum and EVM-compatible blockchain.
Oasis Ethereum ParaTime is fully compatible with the Ethereum protocol. ERC721 smart contracts written in Solidity can be deployed directly to Oasis Ethereum ParaTime without any changes.
You can use an online IDE tool called BUIDL to code and deploy an ERC-721 smart contract on Oasis Ethereum.
Step 1 Set up MetaMask
Open MetaMask, and select custom RPC. Enter the network name and add the RPC link of Oasis Ethereum: https://rpc.oasiseth.org:8545. That configures the MetaMask wallet to use the Oasis Ethereum blockchain.
Then deposit 0.01 OETH to this MetaMask account from the OETH developer faucet.
You can export the private key of this account via MetaMask’s "Account details" menu.
:warning: Warning: Pasting the private key of an account with a lot of value (i.e. a holding account) is not recommended whatsoever. Instead, please only transfer a tiny amount of value to a new one-off development account address and only use this new development account when writing and deploying your contracts. After all, you only need enough value to pay for gas; nothing else. Keep your holding account safe by never sharing its private keys.
Next open the BUIDL online IDE for Oasis Ethereum.
Click to open “account”, select Import, import the MetaMask private key, and you will see your MetaMask account address in BUIDL. You will use this account address to deploy ERC-721 contracts and to mint the NFT tokens.
Next, choose the Solidity language compiler version in BUIDL. Choose Solidity 0.4.26 here.
Copy and paste the source code into the Contract Tab.
You can find the ERC-721 smart contract source code here.
At the end of the contract code, contract MyNFT
is to mint the ERC-721 tokens. Here, you can specify a symbol for your ERC-721 tokens.
Click the Compile button and select MyNFT to deploy to the blockchain.
The deployment is successful, and you are now half way through issuing ERC-721 tokens on Oasis Ethereum ParaTime. Call the totalSupply
function in BUIDL, and see that it returns 0. There is no token in this contract yet. The next step is to mint ERC-721 tokens with digital assets.
Go to the mintToken
function. Enter an address in to
to assign the owner of the new ERC721 token. Enter an integer number in tokenId
to set the unique id of the ERC721 token. Enter the URL of your digital asset, such as an image or a video, in uri
to associate the digital asset with the ERC721 token.
Click the Transact button to mint the ERC-721 token. If you want to mint more ERC-721 tokens, simply set other to, tokenId, uri
parameters in the mintToken
function. Please note, every token id can only correspond to one digital asset URL. If you want to mint a new ERC-721 token for a new URL, you need to use a different token id.
After the Tx is confirmed, we can check the status of the deployed ERC-721 contract and the minted ERC-721 token.
Call the totalSupply
function again, and it returns 1 this time.
Enter the tokenId and call the ownerOf
function. It returns the address we just entered in the mintToken
function.
Enter the tokenId and call the tokenURI
function, it returns the URL we just entered in the mintToken
function.
The approve
function gives permission to to
to transfer tokenId
token to another account. The function caller must own the tokenId
token. So we need to import the private key of the owner account of tokenId
token into BUIDL.
How to deploy the contract
Please ignore this step if you use the same account to deploy the ERC-721 smart contract and receive the minted ERC 721 Token. Just call the
approve
function.
Copy the ERC 721 smart contract address.
Import your account that received the ERC-721 token.
Copy and paste the same smart contract source code.
Click the Compile button and choose MyNFT.
Paste the ERC 721 contract address and click At. Now, we have an instance to the deployed ERC 721 contract in BUIDL.
We see the previously deployed ERC-721 contract.
Go to the approve
function. Enter an address in to
to assign the receiver of the given ERC721. Enter the id in tokenId
to transfer the unique NFT Token. Different tokenId
means different NFT Tokens.
The safeTransferFrom
function transfers tokenId
token from from
to to
.
Enter the owner's address in from
. Enter the receiver address in to
. Enter the id in tokenId
. The three parameters will make sure you are transferring the correct NFT Token.
We can call ownerOf
and balanceOf
functions to see the status of the given token. The owner of the given token has been transferred to 0xbf9a58574aab193f0c442f6f7dea22ec413db648
.
We will create a web-based Dapp to display and send your NFTs. Stay tuned!
Please remember to save your token address
and tokenId
, which need to be submitted to the hackathon organizer through this form.