iT邦幫忙

2022 iThome 鐵人賽

DAY 26
0
Web 3

NFT、區塊鏈、比特幣,這些到底是什麼?? 讓我們從頭認識這些酷東西吧! 發出屬於自己的NFT!系列 第 26

[Day 26] 建造鐵人賽專屬NFT!(三)設定NFT總數, 並限制一人只能鑄造一個

  • 分享至 

  • xImage
  •  

上篇回顧

昨天我們成功把NFT部署上測試鏈Goerli了,不過有許多東西都還沒設定完成,導致NFT不但顯示不出來也沒有名字或數量限制等,今天讓我們回到Remix來coding吧!


鐵人賽專屬NFT需求分析

首先當然要先分析一下這個鐵人賽專屬NFT的規則是什麼

  1. 總數量: 30枚
    因為鐵人賽總共30天,我們就設定這個數量讓他更有意義
  2. 鑄造價格: 免費
    這個NFT當然不是拿來斂財用的,而且最後希望前期看到文章的各位都可以鑄造到
    所以決定採用Free Mint的形式
  3. 其他限制: 每個錢包只能鑄造一次
    既然總數量只有30枚,而且又是採用免費鑄造的形式
    為了避免有人惡意大量鑄造,所以限制一個錢包只能鑄造一次

好了,分析完需求之後讓我們直接回到Remix開始Coding吧!

代幣鑄造規則

首先我們先來設定總數30枚以及每人只能鑄造一枚的數值
將這兩個定值新增在constructor()上方:
https://ithelp.ithome.com.tw/upload/images/20221007/20152537FPJchV6Jgv.png
有了這兩個定值後,讓我們移到下面的safeMint()鑄造函式
在鑄造的時間用檢查的方式來判斷用戶使否可以互動
先看一下目前鑄造的函式是如何運作的:
https://ithelp.ithome.com.tw/upload/images/20221007/201525377iMnbozs9m.png
了解之後
我們在tokenID+1前插入兩行require需求
檢查是否符合資格否則出現後方的訊息
https://ithelp.ithome.com.tw/upload/images/20221007/20152537snxehRUEJ2.png
完成!
記得把safeMint()函式尾處的onlyOwner移除
否則只有合約的擁有者才能跟這個函式互動喔~

另外我們將總數量暫時設定成2,方便等等的測試
最終應該會長這樣
https://ithelp.ithome.com.tw/upload/images/20221007/20152537hs6ZU9OFlr.png

上鏈測試

一樣Compile編譯完,部署到測試鏈Goerli
這邊有個小技巧,可以先把舊的合約移除以免待會搞混
https://ithelp.ithome.com.tw/upload/images/20221007/20152537Xta3VhtCm9.png
然後跟safeMint()函式互動,鑄造NFT
https://ithelp.ithome.com.tw/upload/images/20221007/20152537mznhJZSD9d.png

到OpenSea測試網查看

https://ithelp.ithome.com.tw/upload/images/20221007/20152537MbVcYfLxSJ.png
成功!

但是究竟我們的總數量2枚以及每人一個到底有沒有起作用呢
讓我們回到Remix的頁面再鑄造一次,看看可不可行
https://ithelp.ithome.com.tw/upload/images/20221007/20152537ly5wsaeZ5j.png
有!被拒絕了
成功跳出"Sorry, You can only mint this NFT one per wallet."字樣
讓我們用其他錢包地址鑄造看看是否可行
https://ithelp.ithome.com.tw/upload/images/20221007/201525370jDV6yF68o.png
成功跳出簽署合約~ 進行鑄造後
我們回到OpenSea測試網查看
https://ithelp.ithome.com.tw/upload/images/20221007/20152537nfPOfsYQeK.png
也成功! 而且代幣編號變成了1
也就是已經鑄造了兩枚代幣#0跟#1 到達規定值
所以現在應該不管哪個錢包地址都無法鑄造了!
讓我們回去試試
https://ithelp.ithome.com.tw/upload/images/20221007/20152537zY1ezlLODS.png
成功顯示"Sorry, This NFT has been fully minted."


小結

我們今天成功將NFT設定了總數,以及一人只能鑄造一枚代幣的規則。不過認真想的話這其中好像還有一些問題欸?! 如果同一個人一直填入不同人的錢包是不是也可以快速的把NFT鑄造完呢? 明天讓我們來修復這個問題!

<上一篇> [Day 25] 建造鐵人賽專屬NFT!(二)把寫好的合約部屬上測試鏈Goerli!竟然還有測試用OpenSea?!
<下一篇> [Day 27] 建造鐵人賽專屬NFT!(四)強化每人只能鑄造一枚NFT的邏輯與實作


上一篇
[Day 25] 建造鐵人賽專屬NFT!(二)把寫好的合約部屬上測試鏈Goerli!竟然還有測試用OpenSea?!
下一篇
[Day 27] 建造鐵人賽專屬NFT!(四)強化每人只能鑄造一枚NFT的邏輯與實作
系列文
NFT、區塊鏈、比特幣,這些到底是什麼?? 讓我們從頭認識這些酷東西吧! 發出屬於自己的NFT!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言