【端午企劃】NFT 的鑄造&銷毀是怎麼一回事 | 智能合約開發計劃 #9

更新於 發佈於 閱讀時間約 12 分鐘

你領到端午節 NFT 了嗎

端午節 NFT 已經在端午節當天發送給所有有填表單的人手上了,快去檢查一下自己的錢包看看有沒有收到吧!
端午節 NFT 在 OpenSea 二級市場連結:https://opensea.io/collection/dragonboatfestival
這篇會是端午節 NFT 系列的最後一篇文,同時也是這個系列中最核心的部分,我們終於要來實際鑄造產生 NFT,並在 OpenSea 上看看結果了,有興趣的話就繼續看下去吧。

鑄造(Mint)與銷毀(Burn)機制

上一篇文章的兩個小程式做完其實只是把程式碼放到區塊鏈上而已,實際上並沒有產生 NFT ,再來要做 NFT 的鑄造與銷毀了,鑄造會被稱作「Mint」,銷毀被稱作「Burn」,所謂鑄造就是要產生新的 NFT 的函式,而銷毀則是讓這個 NFT 消失的函式,直接來看一下程式碼。
MintAndBurn.sol
// SPDX-License-Identifier: MIT
pragma solidity >=0.8.0 <0.9.0;
import "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";
import "@openzeppelin/contracts/access/Ownable.sol";

contract MintAndBurn is ERC1155, Ownable {
constructor() ERC1155("ipfs://QmdnBQrQa6KXVeeNr7fpc9uxQLtcCyknjcWqLXtoG1ahTK") {}

  function setURI(string memory newuri) public onlyOwner {
_setURI(newuri);
}

function mint(uint256 id, uint256 amount) public onlyOwner {
_mint(msg.sender, id, amount, "");
}

function burn(uint256 id, uint256 amount) public{
_burn(msg.sender, id, amount);
}
}
大致上都沒有變化,只是底下增加了mint 跟 burn 兩個函式,分別對應到 _mint 與 _burn,這兩個跟前面使用 _setURI 相同,都是 OpenZeppelin 幫我們寫好的程式可以直接用,寫完之後一樣編譯再發佈新的智能合約,底下我們來實際鑄造看看。

測試 Mint 與 Burn 的功能

一樣需要重新編譯跟發佈新的智能合約,這裡實際會操作這三個紅色圈圈,另外還會搭配 OpenSea 來看一下自己的帳戶出現的 NFT。
一開始先檢查錢包的 NFT 數量,使用「balanceOf」函式,填入自己的錢包地址以及對應的 ID 號碼按下「call」按鈕,底下就會出現結果,由於這次我們只打算發行一種圖片的 NFT ,所有操作的 ID 欄位都填 0 就可以了。正常來說在發佈合約以後鑄造以前,錢包中的 NFT 餘額會是 0。
再來,使用「mint」函式,填入 ID 以及要鑄造的 NFT 數量,按下「transact」發佈鑄造 NFT 的請求到區塊鏈上,等到上鏈了就可以再查一次錢包的 NFT 餘額。
再查一次錢包餘額,數量變成剛剛鑄造的 10 了。
再來去 OpenSea 上看看自己剛剛鑄造的 NFT 長得怎樣,我們發佈在 Rinkeby 測試網,OpenSea 也要用測試網的版本,網址是:https://testnets.opensea.io/
用錢包登入後,點選右上角的個人檔案,再選擇「Acticity」,這裡就能看到在甚麼時候鑄造了幾個 NFT ,像剛剛鑄造了 10 個 Logo 的 NFT,這裡就會顯示我在三分鐘前 Minted 10 個 NFT。
點開這個 NFT 可以看到更細微的內容,像這些名稱(ITechNote Logo)、簡單描述的 Description (The first ITechNote logo NFT created by ITechNote)還有右上角五個按鈕的中間那個可以直接連線到我的個人網站,都是透過之前設定的 .json 檔告訴 OpenSea 的內容哦!
一般的專案似乎不太需要銷毀 NFT 的機制,但是 ERC-1155 有很大一部分是設計給遊戲用的,試想這些 NFT 是遊戲道具,除了可以被放到鏈上進行交易以外,也應該要能夠在遊戲中被消耗掉,消耗 NFT 就會是一個銷毀 NFT 的動作。
看了一下 OpenZeppelin 的程式碼是怎麼做到銷毀 NFT 的,才知道原來銷毀也不是真的銷毀,而是把這個 NFT 發送給 0 地址。
試試看「burn」的函式,ID 一樣給 0 ,amount 就是要銷毀多少個 NFT,這裡假設我要燒掉 3 個,再按「transact」發佈燒掉 NFT 的請求到區塊鏈上。
請問原本 10 個 NFT,燒掉 3 個剩幾個呢?
再次使用「balanceOf」查詢,答案當然是 7 個。
回到 OpenSea 刷新之後,可以看到一筆新的 NFT 轉移,從我們的錢包轉了 3 個到空地址裡面。
點開之後,確實也從 10 owned by you 變成 7 owned by you。

OpenSea 上的 Collection 編輯

可以先參考我這次發行的「端午節 NFT」,在 OpenSea 二級市場上的網址為:https://opensea.io/collection/dragonboatfestival
以我在端午節發行的 NFT 為例子,寫完程式也發布到區塊鏈上之後,在 OpenSea 上可以看到這些東西,然而我們的 .json 檔只有設定到 NFT 單一個體的 Name、Description 等等內容,Collection的欄位出現的是 “Unidentified contract – ooxxooxx”,你可以把Collection想像成一整套系列作品的名稱,而在同一系列底下可以有很多不同的 NFT,要是這個系列不只一種 NFT ,那麼 Collection 就變得相當重要了,如果不設定不僅讓大家少了透過Collection的方式搜尋到你的作品,在 NFT 個體的呈現也不太好看。
直接點選「Unidentified contract – ooxxooxx」就可以進入這個 NFT 的 Collection,中間偏右側的最右邊有個 … 的按鈕,按下去選「Edit」就可以編輯這個 Collection。
接著就會到 Collection 的編輯頁面,這裡有超級多東西可以設定的,我會大略寫一下它們各自的用途,希望讓正在發揮創意的你可以瞭解到怎麼設定才是更符合你的 NFT 作品。
  • Logo image: 這系列 NFT 你想要放的 Logo 樣式。
  • Featured image: 這個圖片會出現在主頁、類別頁面或 OpenSea 的其他促銷區域用來展示你的收藏,以我實際的感覺類似作品的大圖,這個圖最好不要文字,而且是可以馬上認出這個系列底下的 NFT 會是什麼樣子的。
  • Banner image: 這個圖片就只會出現在Collection頁面的最上方,就是系列作品橫幅的概念,需要又寬又窄的圖片,可以豐富你的 Collection 頁面或是營造這個 NFT 給人的氛圍,蠻重要的。
  • Name: 幫這個系列取個名字吧。
  • URL: 看有沒有想要放的連結名稱,就是到時候其他人連到這個 Collection 時出現的 URL,既然是網址,只能是小寫的英文、數字,也可以加一些橫槓之類的特殊符號。
  • Description: 對於這一系列作品更詳細的描述。
  • Category: 就是類別,目前在 OpenSea 上分了很多不同類型,單看你覺得這系列更偏向哪一種的 NFT,這有助於某類型的 NFT 藏家更容易搜尋到你的作品。
  • Links: 可以放你的官方網站連結,或是你希望大家在哪個社交軟體上找的到你的網址連結。
  • Royalties: 簡單來說就是版稅的抽成,畢竟我們那麼努力創作出來的作品,賣出後後面被有心人士炒作,賺的錢要是都與我們無關不是很嘔嗎?所以 OpenSea 提供了版稅的設定,最高可以設到10%,只要我們的作品有被交易,就能不斷從中獲利,舉個例子:
例子1: 我創建了某個NFT,販售價格為 10 ETH,版稅設定10%,當作品賣掉後我當下可以得到 8.75 ETH,0.25 ETH會被 OpenSea 拿走(2.5%平台手續費),而最後版稅的部分會在2~4週後收到最後價值1的 ETH,賣了10 ETH,實收9.75 ETH。
例子2: 後來買我作品的人,又以 15 ETH 出售給別人,所以對於發行者而言,由於我們設定版稅10%,到時候我們仍然能夠再收到1.5 ETH。
  • Blockchain: 在 OpenSea 中目前已經支援四個區塊鏈可以讓大家選擇,Ethereum (以太坊)、 Polygon、Klaytn 以及 Solana ,Polygon 是以太坊的擴容方案,之所以出現 Polygon 是為了解決長久以來以太坊網路壅塞加上幣價不斷上漲導致的手續費飆漲問題,在這裡我們不詳談區塊鏈的技術,你只要知道以太坊仍然是現在大部分 NFT 發行的主流地方,但是它的手續費高昂,若你只是剛開始嘗試發行以及交易 NFT,我們可以選擇在 Polygon 或是其他區塊鏈上發行,它們的手續費相對以太坊低很多,可以大大降低使用與交易門檻,讓我們在學習的過程中少繳一點學費。
一旦你選擇了不同的鏈發行 NFT,理論上你的 NFT 就會永遠存在在那個鏈上,而不能轉換到其他鏈上,但是由於 Polygon 是以太坊的擴容方案,都是照著以太坊的協議走的,他們現在也有推出給NFT專用的跨鏈橋,在這裡 ERC721 及 ERC1155 都有支援,所以如果某天你想要把 Polygon 上的 NFT 轉發到以太坊上是可行的,不過會要付額外的手續費來做到這件事。
而後面剩下的其他選項直接用預設的就好嚕!
設定完了以後回到 Collection 看看剛剛設定德是不是符合自己預期的那樣。

結語

可以鑄造可以銷毀還會顯示圖片跟一些詳細資訊,大概開發到這裡,基本上就已經是一個完整的 NFT 專案了。
你會發現 ERC-1155 跟之前的 ERC-20 類似,都是可以一次轉很多代幣出去,所以對我來說其實給你一個跟給你一億個端午節 NFT 沒甚麼差別,總之祝大家端午佳節安康,先前填過領取 NFT 表單的讀者們可以在 Polygon 上看到資產了哦!
端午節 NFT 在 OpenSea 二級市場連結:https://opensea.io/collection/dragonboatfestival

延伸閱讀

智能合約開發計劃目錄列表:https://itechnote.co/sc/

最後,謝謝你在百忙之中願意抽空來花時間來看我的文章,如果還喜歡這些內容的話希望能獲得你的追蹤及小額贊助支持,讓我更有繼續寫下去的動力,EVM 兼容錢包地址為 0xae1dd06d57f582999a9c50b86ba913eecd7155ce。
也歡迎加入 Line 社群Telegram 群組 一起討論相關話題

我們下次見嚕 o((>ω< ))o~
即將進入廣告,捲動後可繼續閱讀
為什麼會看到廣告
《科技隨筆 | 智能合約開發計畫》 智能合約開發計畫會深入淺出,從認識以太坊的協議開始出發,慢慢從最簡單的代幣到發行 NFT ,甚至是開發一些去中心化應用程式(Dapps),並做一些簡單的使用者介面讓任何人可以透過瀏覽器開啟 Web3.0 的大門。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
開發 NFT 專案無非三個步驟:寫程式 → 編譯程式碼 → 發佈智能合約,除了這三個步驟以外,我們還將介紹如何使用 OpenZeppelin 做為專案開發的根基,想要打造車子不再需要從輪子開始造起了,大幅增加開發專案的效率。
介紹 NFT 的 Metadata、JSON 格式是甚麼,如何去客製化我們的 NFT,它的規格標準怎麼透過 Metadata 來設定的,目前最大的 NFT 二級市場 OpenSea 又提供哪些 Metadata 可以使用。
在這裡,我們會分析為甚麼發行 NFT 會需要利用 IPFS 來做, IPFS 是甚麼?以及實際操作如何使用 Pinata 的服務將想要上傳的檔案放到 IPFS 網路上。從這裡出發,開始擁有第一張去中心化圖片吧!
這次的 NFT 開發,希望讓讀者們在實作時,盡量用最少的程式碼也能夠完成你的 NFT 作品,而這篇文章可以當做是一個暖身,我們會大致瀏覽本次開發 NFT 所需要用到的一些工具與小知識,大概整理之後暫時先分為六大主題...
這一篇文章會深度解析在區塊鏈的世界中最常見的三種代幣協議 ,當中包含現在最紅的 NFT ,理解這些大家講好的規範,會讓我們在使用時更加瞭解它是怎麼運作的,這樣在使用一些去中心化的服務時,就可以自行去判斷它寫的內容是不是壞壞的,能讓自己避開危險在幣圈可是很重要的生存之道呢。
在這篇文章中,我們會提到 EIP 是甚麼,它的種類有哪些,還有所謂的 ERC 的代幣協議是甚麼,如果你也是想要透過寫程式的方式,在以太坊兼容的區塊鏈上發行自己的代幣或是 NFT 的話,那麼大致上瞭解 EIP 與 ERC 就會是需要的功課。
開發 NFT 專案無非三個步驟:寫程式 → 編譯程式碼 → 發佈智能合約,除了這三個步驟以外,我們還將介紹如何使用 OpenZeppelin 做為專案開發的根基,想要打造車子不再需要從輪子開始造起了,大幅增加開發專案的效率。
介紹 NFT 的 Metadata、JSON 格式是甚麼,如何去客製化我們的 NFT,它的規格標準怎麼透過 Metadata 來設定的,目前最大的 NFT 二級市場 OpenSea 又提供哪些 Metadata 可以使用。
在這裡,我們會分析為甚麼發行 NFT 會需要利用 IPFS 來做, IPFS 是甚麼?以及實際操作如何使用 Pinata 的服務將想要上傳的檔案放到 IPFS 網路上。從這裡出發,開始擁有第一張去中心化圖片吧!
這次的 NFT 開發,希望讓讀者們在實作時,盡量用最少的程式碼也能夠完成你的 NFT 作品,而這篇文章可以當做是一個暖身,我們會大致瀏覽本次開發 NFT 所需要用到的一些工具與小知識,大概整理之後暫時先分為六大主題...
這一篇文章會深度解析在區塊鏈的世界中最常見的三種代幣協議 ,當中包含現在最紅的 NFT ,理解這些大家講好的規範,會讓我們在使用時更加瞭解它是怎麼運作的,這樣在使用一些去中心化的服務時,就可以自行去判斷它寫的內容是不是壞壞的,能讓自己避開危險在幣圈可是很重要的生存之道呢。
在這篇文章中,我們會提到 EIP 是甚麼,它的種類有哪些,還有所謂的 ERC 的代幣協議是甚麼,如果你也是想要透過寫程式的方式,在以太坊兼容的區塊鏈上發行自己的代幣或是 NFT 的話,那麼大致上瞭解 EIP 與 ERC 就會是需要的功課。
你可能也想看
Google News 追蹤
Thumbnail
現代社會跟以前不同了,人人都有一支手機,只要打開就可以獲得各種資訊。過去想要辦卡或是開戶就要跑一趟銀行,然而如今科技快速發展之下,金融App無聲無息地進到你生活中。但同樣的,每一家銀行都有自己的App時,我們又該如何選擇呢?(本文係由國泰世華銀行邀約) 今天我會用不同角度帶大家看這款國泰世華CUB
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
**2024.04.20比特币BTC减半Runes符文币爆火,**那么你了解符文币吗?Runes符文币是的底层设计机制你了解吗?在过去半年里笔者从 ETH 生态完全转入 BTC 生态,从应用层转入链底... 🚀 币安 - 全球最大加密货币交易所 💥 独家优惠 💥 💰 注册即享 20% 手
Thumbnail
一再對外宣稱「Probably Nothing」什麼也不是的NotCoin終於結束挖礦
比特幣是一種加密貨幣,具有獨特的歷史和價值。由於加密貨幣交易市場的競爭,關鍵字在關鍵位置上非常重要。
Thumbnail
現代社會跟以前不同了,人人都有一支手機,只要打開就可以獲得各種資訊。過去想要辦卡或是開戶就要跑一趟銀行,然而如今科技快速發展之下,金融App無聲無息地進到你生活中。但同樣的,每一家銀行都有自己的App時,我們又該如何選擇呢?(本文係由國泰世華銀行邀約) 今天我會用不同角度帶大家看這款國泰世華CUB
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
**2024.04.20比特币BTC减半Runes符文币爆火,**那么你了解符文币吗?Runes符文币是的底层设计机制你了解吗?在过去半年里笔者从 ETH 生态完全转入 BTC 生态,从应用层转入链底... 🚀 币安 - 全球最大加密货币交易所 💥 独家优惠 💥 💰 注册即享 20% 手
Thumbnail
一再對外宣稱「Probably Nothing」什麼也不是的NotCoin終於結束挖礦
比特幣是一種加密貨幣,具有獨特的歷史和價值。由於加密貨幣交易市場的競爭,關鍵字在關鍵位置上非常重要。