保姆級教程 | 手把手教你發行自己的NFT(下)

買賣虛擬貨幣


在這一節裡,我們將要親自部署一個屬於自己的、最基礎的nft。

涉及的操作包括:把我們希望展示的圖片定向到nft合約中、限定nft發行的總量。

教程展示的是單一圖片nft發行方法。領取本教程提供的erc721標準原始碼模板,以及希望學習發行多圖nft的同學,歡迎掃描文章結尾的defi有道小助手二維碼,加入社群進行進階學習。

前情回顧:上一節裡,我們學會了在remix ide中編譯、部署合約,以及將一張選定的圖片上傳至ipfs分散式儲存網路,並獲取了儲存雜湊。

接下來我們要做的事情就是:讓nft合約讀取這個儲存雜湊,並限定發行的總量。

在remix ide的檔案編輯區新建一個名叫nft.sol的檔案(或者您喜歡的任意名字),也就是第一講的這兩個操作:

然後,在空白的檔案編輯區,把我們的合約程式碼模板複製貼上上去:

我們已經最佳化了大部分程式碼,您不需要掌握過多的變成技巧,只需要關注以下兩個位置:

一,第1307行的tokenuri:
tokenuri,可以把圖片的分佈儲存雜湊繫結在這個智慧合約裡,並且定義這個nft的一切屬性。這裡只定義了nft的名字和簡介,事實上,我們在鏈遊裡經常看到的諸如力量、傷害、防護等等數值都可以在此定義。

當然,這些字串太長了,原則上應該把以上那些冗長資訊整理成一個json格式的檔案,並同樣儲存在分散式網路上——對於沒有程式設計基礎的同學太痛苦了,為了極簡化操作流程,我們還是直接把以上資訊儲存在智慧合約裡。

要儲存/編輯資訊,你只需要改動上圖中的1309行,我們用不同的底色標出來:

string memory json = "{\"image\":\"https://gateway.pinata.cloud/ipfs/qmqv5ucu1y6uzmsq1it**leuvnh3dmsednwsdritvwtrm8\",\"name\":\"my nft\",\"description\":\"this is my nft.\"}";

藍色部分,是圖片在ipfs網路上的儲存路徑,黃色部分是nft的名字,紅色部分是對nft的說明,三個部分均可自由編輯。

重點說說藍色部分,還記得上一講我們在pinata把一張圖片存在了ipfs上嗎?
點選上圖紅箭頭指示的位置,這個圖片就可以在瀏覽器裡開啟:
我們手動複製上圖紅框中的訪問路徑,貼上到藍色底色部分裡就可以。當然,我已經貼上好了。

我們會注意到這個路徑裡包含了pinanta的域名和閘道器。理論上,你只要寫ipfs://+雜湊值就可以,但目前直接支援ipfs協議的瀏覽器並不多,為了確保我們的nft能儘可能地被更多dapp完整解析,還是建議保留https。直接複製貼上,總是沒錯的。

一,第1314行的發行總量,如下圖所示,我在這裡設定了8000,表明這個nft最多鑄造量8000枚。
注意,nft排序是從第0個開始的,亦即編號為0的nft是我們人類通常理解的“第一個nft”。所以,如果nft總供應量為8000枚,使用者持有的是第0枚-第7999枚。
您可以把這個8000修改為任意非0整數。

三、第1341行的nft名稱及縮寫:
模板中把它的名字定義為“my nft”,縮寫定義為“mnft”,您可以隨意定義。根據我們的實操檢驗,在當前版本的solidity語言(0.6版本)下,定義成中文也是可以的,不過我真心不建議這麼做,你懂的。

完成了上述步驟之後,我們就可以對合約進行編譯,還記得下面這張圖嗎?點選藍色的按鈕compile,並等待一個綠色小對勾的出現:
需要特殊說明的是,remix ide升級之後,您編譯這個合約可能不會看到綠色的小對勾,而會收到兩條提示資訊:
這是否意味著我們的合約出現問題了呢?一起來看看提示資訊是什麼:
它的意思是說,程式碼的256行和800行的“函式性質”可以最佳化為pure,而我們用的是“view”。

講點“超綱內容”:view函式是用來查詢鏈上資料的;pure函式是不需要查詢鏈上資料、更不需要修改鏈上資料的。

比如:我要查詢某個地址有多少usdt,就要用view函式;我要計算“一加一等於幾”這個和區塊鏈沒關係的數學問題,就要用pure函式。

我們的256行和800行,是erc721標準程式碼留給我們進行高階nft開發用的。在erc721標準中,它們被定義為view而非pure。只是我們現在沒有用到這兩行程式碼,內容為空,編譯器就建議我們最佳化為pure。

我個人建議不要最佳化,不要改變erc721的標準定義。如果這篇教程能成為您學習區塊鏈開發的契機,有朝一日有幸用到了256和800行,亂改erc721標準可能反而會造成不便。

更重要的是,不做這個最佳化,也不妨礙合約的釋出和nft的交易。

接下來,就讓我們點選黃色的按鈕deploy,在彈出的metamask裡支付gas,部署合約吧(記得把紅、藍兩個區域選為injected web3和mynft):
合約釋出成功之後,你會在當前頁面的左下方看到它,以及它的合約地址:
把它展開,在claim方法裡輸入0,再支付一次gas,你就成功鑄造了第一枚自己發行的nft:
稍等片刻,用你當前的錢包登入opensea,就可以看到這枚nft的完整資訊了:
以上是最簡單的nft發行方法,如果想學習多圖nft、可變nft的進階發行,歡迎掃描下方的二維碼新增defi有道小助手,加入社群。

end

歡迎在評論區留言,如果對defi有道感興趣,可以私信我們瞭解更多相關知識,我們有數不盡的乾貨等著你,願我們共同進步,defi快樂!


免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;