製作以太坊NFT非同質化代幣
NFT(non-fungible tokens)非同質化代幣是基於以太坊ERC 721標準來製作的。在本文中,我們將創建用於發行和管理 NFT 的智能合約。 例如,我們正在為數位創作和藝術品構建版權解決方案。 每個一次的創作都可以使用唯一的 URL 進行識別和定位。 我們將在這個LAB中建立的智能合約允許我們向以太坊網路上的任何錢包地址發行 NFT。 用戶擁有 NFT 表示他們有權存取和使用位於所提供 URL 的內容。
建立NFT智能合約
我們將使用Remix IDE來建立我們的NFT智能合約(檔案名稱為JasonMFT.sol)。由於以太坊已有NFT的模組可以使用,這讓我們建立自己的NFT智能合約變得非常容易。代碼如下:
//*** SNIPPET 11.1
// SPDX-License-Identifier: MIT
pragma solidity 0.8.0;
// This contract will inherit from the Ownable and NFT Token Metadata contracts from 0xcert
import "https://github.com/0xcert/ethereum-erc721/src/contracts/tokens/nf-token-metadata.sol";
import "https://github.com/0xcert/ethereum-erc721/src/contracts/ownership/ownable.sol";
contract JasonNFT is NFTokenMetadata, Ownable {
// Contract constructor.
// Runs at deployment.
// Sets name and symbol of NFT.
constructor() {
nftName = "JasonNFT";
nftSymbol = "JNF";
} // constructor
// This function will mint a new NFT and deposit it in the wallet at the _to address.
// Each token must have a Token ID.
// The URL property indicates the digital asset the token holder has access to.
function mint(address _to, uint256 _tokenId, string calldata _url) external onlyOwner {
super._mint(_to, _tokenId);
super._setTokenUri(_tokenId, _url);
} // mint
} // JasonNFT
編譯與佈署合約
我們使用Remix IDE並結合Metamask佈署到Goerli測試網路中。由於這個至智能合約使用的其他智能合約功能,所以請確認我們將會佈署的智能合約名稱。
到EtherScan查看我們的合約佈署狀況。
發行我們的NFT代幣
部署合約後,使用 Remix Interface 呼叫合約中的“mint”函數。 _to 的欄位填上我們的錢包地址。 _tokenId欄位填上1,並將 _url欄位填入數位資產。 最後點擊“transact”按鈕向我們的錢包發行新的 NFT。
檢查我們的MetaMask錢包,我們會看到有一筆新地址。
確認交易之後,連結到EtherScan確認我們的Mint交易。
點選該筆交易的State頁籤,我們會看到我們發行的第一枚NFT代幣。展開該筆NFT交易,在每一筆的Storage Address的After將選項調整成Text。我們就會看到整個我們數位資產的URL完整路徑。