【端午企劃】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
查看全部
發表第一個留言支持創作者!
開發 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 就會是需要的功課。
你可能也想看
Thumbnail
作家 Morgan Housel 在《華爾街日報》中提出一個觀點:我們是用理解知識的方式在思考、學習金錢觀,而不是用理解心智與行為模式的方式學習理財。這段話讓我意識到,我們的財務決策並非總是理性的,情緒因素也扮演著重要角色。通過掌握金錢心理學,能夠幫助我們改善用錢習慣,使財務決策更為理性和長遠。
Thumbnail
端午節,紀念屈原。 然後,經過了千年, 據說不久前,世人終於發現,原來屈原是獨派英雄―― 堅持楚國獨立,抗拒被秦國統一。 於是,這麼說來, 端午節,也就是「楚國獨立抗暴紀念日」了, 好像有了不同的意義呢。 上面,是最近到貨的裝甲車們。 站在前面擋車的, 是假面騎士1號。
Thumbnail
2024高雄端午國際龍舟嘉年華,為避開夏天炎熱氣溫,選手們於夜間賽龍舟、每艘龍舟身上裝點彩色LED燈,在愛河伐行競賽相當搶眼,緊張的龍舟比賽氣氛中,增添電光閃爍的視覺效果。 晚上另有飛龍在天表演,這隻20米長橘紅色巨龍,是今年春節期間曾在佛光山展演的祥龍花燈
Thumbnail
🌼暈船的花 他不是沒有被人「冷卻」過,但是在他的權力槓桿遊戲裡,白營的八席是必須的。 黃國昌不接他的電話,花蓮那邊又傳來議長等人打算組成「反傅聯盟」的消息。好好的端午節,傅崐萁沒有安排公開行程,盯著電視、政論節目,手上拿著手機。 黃國昌不接他的電話。 理論上他應該要生氣,但他氣不起來。他腦
Thumbnail
過端午節要吃棕子,賽龍舟,現在還放一天假。這都是托屈原的福,得感謝他,是他投江自盡用生命帶給後人的福利。  屈原非常有才華,是中國文學史上第一位留下姓名的偉大詩人。在他的時代,他獨步詩壇。春秋戰國時代,沒有能和他比肩的詩人。我覺得,如果端午節要紀念屈原,那就多宣揚些他的文學成就吧! 過端午節念
Thumbnail
【記者_許家源/雙北報導】 隨著端午節的來臨,臺北市各校紛紛舉辦親子活動,讓孩子們在歡慶的氛圍中認識傳統節慶文化。近日,臺北市中正區螢橋國民小學結合食米學園計畫、食農教育及營養教育,成功辦理了一場別開生面的親子端午節慶活動——「包粽趣」。透過體驗包粽子,孩子們不僅了解了台灣米食的特色,更感受到了米食
Thumbnail
端午佳節,也祈願這幾年的紛亂逐漸平息,讓大眾早日回歸正常生活吧。
Thumbnail
每一次的關愛陪伴活動,TDCA透過發想不同的活動創意,讓孩子感受快樂啟發學習的自信,短短的二個半鐘頭,在回程路上...歡笑與滿足仍悠悠迴盪在耳邊。
算是某種小時候的夢想,想要能夠成為家中的一份子,總是很害怕哪天就突然身邊完全沒有接納我的人,也總害怕很久之後的未來,大家都不相往來了。 意外的在今年很努力長出自我後,今天突然順利的和桌邊的親戚對上話了,不是刻意問起的寒暄,不是我特地打招呼,單純從桌上的菜、桌邊的互動,就讓大家聊起了各家裡面遇到的事情
Thumbnail
端午假期期間,美股出現黑K拉回,台股週一開盤勢必受到影響,但目前走勢仍是多方格局,先以漲多拉回視之!
國軍被俘...你們!居然沒有一個人有血性,向秦國宣戰,捍衛我楚國尊嚴! 這是小說第二部-縱橫中的一段, 屈原在楚懷王的兒子-楚頃襄王的主持的朝堂上, 以最後的幾口氣講的話,之後過不了多久, 前279年,秦國上將軍白起攻破楚都-鄢郢,楚國被迫東遷, 氣勢也已經若到只剩下拖台錢的份, 後來就是西元前22
Thumbnail
作家 Morgan Housel 在《華爾街日報》中提出一個觀點:我們是用理解知識的方式在思考、學習金錢觀,而不是用理解心智與行為模式的方式學習理財。這段話讓我意識到,我們的財務決策並非總是理性的,情緒因素也扮演著重要角色。通過掌握金錢心理學,能夠幫助我們改善用錢習慣,使財務決策更為理性和長遠。
Thumbnail
端午節,紀念屈原。 然後,經過了千年, 據說不久前,世人終於發現,原來屈原是獨派英雄―― 堅持楚國獨立,抗拒被秦國統一。 於是,這麼說來, 端午節,也就是「楚國獨立抗暴紀念日」了, 好像有了不同的意義呢。 上面,是最近到貨的裝甲車們。 站在前面擋車的, 是假面騎士1號。
Thumbnail
2024高雄端午國際龍舟嘉年華,為避開夏天炎熱氣溫,選手們於夜間賽龍舟、每艘龍舟身上裝點彩色LED燈,在愛河伐行競賽相當搶眼,緊張的龍舟比賽氣氛中,增添電光閃爍的視覺效果。 晚上另有飛龍在天表演,這隻20米長橘紅色巨龍,是今年春節期間曾在佛光山展演的祥龍花燈
Thumbnail
🌼暈船的花 他不是沒有被人「冷卻」過,但是在他的權力槓桿遊戲裡,白營的八席是必須的。 黃國昌不接他的電話,花蓮那邊又傳來議長等人打算組成「反傅聯盟」的消息。好好的端午節,傅崐萁沒有安排公開行程,盯著電視、政論節目,手上拿著手機。 黃國昌不接他的電話。 理論上他應該要生氣,但他氣不起來。他腦
Thumbnail
過端午節要吃棕子,賽龍舟,現在還放一天假。這都是托屈原的福,得感謝他,是他投江自盡用生命帶給後人的福利。  屈原非常有才華,是中國文學史上第一位留下姓名的偉大詩人。在他的時代,他獨步詩壇。春秋戰國時代,沒有能和他比肩的詩人。我覺得,如果端午節要紀念屈原,那就多宣揚些他的文學成就吧! 過端午節念
Thumbnail
【記者_許家源/雙北報導】 隨著端午節的來臨,臺北市各校紛紛舉辦親子活動,讓孩子們在歡慶的氛圍中認識傳統節慶文化。近日,臺北市中正區螢橋國民小學結合食米學園計畫、食農教育及營養教育,成功辦理了一場別開生面的親子端午節慶活動——「包粽趣」。透過體驗包粽子,孩子們不僅了解了台灣米食的特色,更感受到了米食
Thumbnail
端午佳節,也祈願這幾年的紛亂逐漸平息,讓大眾早日回歸正常生活吧。
Thumbnail
每一次的關愛陪伴活動,TDCA透過發想不同的活動創意,讓孩子感受快樂啟發學習的自信,短短的二個半鐘頭,在回程路上...歡笑與滿足仍悠悠迴盪在耳邊。
算是某種小時候的夢想,想要能夠成為家中的一份子,總是很害怕哪天就突然身邊完全沒有接納我的人,也總害怕很久之後的未來,大家都不相往來了。 意外的在今年很努力長出自我後,今天突然順利的和桌邊的親戚對上話了,不是刻意問起的寒暄,不是我特地打招呼,單純從桌上的菜、桌邊的互動,就讓大家聊起了各家裡面遇到的事情
Thumbnail
端午假期期間,美股出現黑K拉回,台股週一開盤勢必受到影響,但目前走勢仍是多方格局,先以漲多拉回視之!
國軍被俘...你們!居然沒有一個人有血性,向秦國宣戰,捍衛我楚國尊嚴! 這是小說第二部-縱橫中的一段, 屈原在楚懷王的兒子-楚頃襄王的主持的朝堂上, 以最後的幾口氣講的話,之後過不了多久, 前279年,秦國上將軍白起攻破楚都-鄢郢,楚國被迫東遷, 氣勢也已經若到只剩下拖台錢的份, 後來就是西元前22