PRC721
這項工作的靈感來自這個this blog
在本教程中,我們將創建一個不可替代令牌 (NFT) 並部署到公共測試網。
ERC721 是代表不可替代代幣所有權的標準,也就是說,每個代幣都是獨一無二的,例如在房地產或收藏品中。
我們將使用 OpenZeppelin Contracts 中的 Presets 合約來創建 ERC721 並使用 Truffle 進行部署。
設置環境
我們首先創建一個新項目。
$ mkdir mynft && cd mynft
$ npm init -y然後我們安裝具有 ERC721 實現的 OpenZeppelin Contracts。
$ npm i --save-dev @openzeppelin/contracts接下來我們安裝一個用於部署的開發工具,在本教程中,我們將使用 Truffle,但我們可以使用任何其他工具,例如 Buidler、Remix 或 OpenZeppelin CLI。
$ npm i truffle獲取合約工件
我們將使用 truffle init 設置我們的 Solidity 項目,以創建合約目錄和配置以連接到網絡。
我們將使用 Preset ERC721PresetMinterPauserAutoId,這是一個預設的 ERC721,因此可以鑄造(使用自動令牌 ID 和元數據 URI)、暫停和銷毀。
Preset 合約已經編譯好了,所以我們只需要將工件複製到 build/contracts 目錄。
使用您最喜歡的編輯器在遷移目錄中創建 2_deploy.js,其中包含以下內容:
將合約部署到本地區塊鏈
我們將使用 truffle develop 來打開一個帶有開發區塊鏈的 Truffle 控制台
前往水龍頭並請求測試PSC
我們可以使用 migrate 將新的 NFT 部署到我們的開發區塊鏈中。
然後我們可以使用我們部署的合約。
與我們的代幣互動
我們可以使用的帳戶是在我們開始 truffle development 時顯示的
令牌元數據
我們可以調用合約來讀取代幣元數據,例如名稱、符號和baseURI
Mint
我們可以從具有鑄幣者角色的賬戶向給定賬戶發送交易以鑄幣代幣。 在我們的例子中,我們從部署了代幣的賬戶進行鑄幣,該代幣被賦予鑄幣者角色。 我們將鑄造 1 個通證 ID 為 0 的 NFT。
我們可以檢查令牌的所有者和元數據的令牌 URI
MetaData
元數據 EIP-721 2 包括一個可選的元數據擴展,帶有名稱、符號和每個 tokenID 的 tokenURI,它可以指向帶有給定 token ID 的名稱、描述和圖像的 JSON 文件。
如何創建和託管此元數據取決於您。 我建議使用您控制的域來指向您託管數據的位置,以便您可以根據需要移動它。
對於本教程,我們將使用我的 JSON 服務器,我們可以在其中將單個 JSON 文件存儲在 GitHub 存儲庫中,我們可以通過假 JSON 服務器訪問該文件。
對於生產,我們需要將您的元數據存儲在一個永久位置,該位置可以在令牌的生命週期內存在。 令牌 ID 1 的示例 JSON 是: http://my-json-server.typicode.com/huangsuyu/nft/tokens/1
部署到公共測試網
接下來我們將部署到PSC鏈測試網。 要進行部署,我們將使用使用 Truffle 連接到公共測試網絡的說明 您將需要以下內容:
Infura 項目 ID(或您選擇的公共節點提供商)
@truffle/hdwallet-provider 已安裝
為 Rinkeby 網絡配置 truffle-config.js
一個有資金的測試網賬戶和助記詞
secrets.json 或其他秘密管理解決方案。 確保不要將其提交到 GitHub!
我的 truffle-config.js 具有以下 rinkeby 配置:
部署到 PSC 測試網
Mint
我們可以從具有鑄幣者角色的賬戶向給定賬戶發送交易以鑄幣代幣。
在我們的例子中,我們從部署了代幣的賬戶進行鑄幣,該代幣被賦予鑄幣者角色。
要查看配置的帳戶,請運行命令 accounts。
我們將鑄造 1 個通證 ID 為 1 的 NFT。指定您想成為通證持有者的地址(0xc7e4bBc4269fdC62F879834E363173aeE7895F45 是我的測試帳戶之一)
Last updated