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

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

你領到端午節 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 上看到資產了哦!

全文完整程式碼:https://github.com/ITechNote/DragonBoatNFT

端午節 NFT 在 OpenSea 二級市場連結:https://opensea.io/collection/dragonboatfestival

延伸閱讀

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

上一篇:【端午企劃】簡易開發 NFT 專案的三步驟 | 智能合約開發計劃 #8


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

也歡迎加入 Line 社群Telegram 群組 一起討論相關話題

我們下次見嚕 o((>ω< ))o~

原文連結 ITechNote 科技隨筆

留言
avatar-img
留言分享你的想法!
avatar-img
ITechNote 科技隨筆的沙龍
27會員
42內容數
《科技隨筆 | 智能合約開發計畫》 智能合約開發計畫會深入淺出,從認識以太坊的協議開始出發,慢慢從最簡單的代幣到發行 NFT ,甚至是開發一些去中心化應用程式(Dapps),並做一些簡單的使用者介面讓任何人可以透過瀏覽器開啟 Web3.0 的大門。
2022/06/03
開發 NFT 專案無非三個步驟:寫程式 → 編譯程式碼 → 發佈智能合約,除了這三個步驟以外,我們還將介紹如何使用 OpenZeppelin 做為專案開發的根基,想要打造車子不再需要從輪子開始造起了,大幅增加開發專案的效率。
Thumbnail
2022/06/03
開發 NFT 專案無非三個步驟:寫程式 → 編譯程式碼 → 發佈智能合約,除了這三個步驟以外,我們還將介紹如何使用 OpenZeppelin 做為專案開發的根基,想要打造車子不再需要從輪子開始造起了,大幅增加開發專案的效率。
Thumbnail
2022/05/26
介紹 NFT 的 Metadata、JSON 格式是甚麼,如何去客製化我們的 NFT,它的規格標準怎麼透過 Metadata 來設定的,目前最大的 NFT 二級市場 OpenSea 又提供哪些 Metadata 可以使用。
Thumbnail
2022/05/26
介紹 NFT 的 Metadata、JSON 格式是甚麼,如何去客製化我們的 NFT,它的規格標準怎麼透過 Metadata 來設定的,目前最大的 NFT 二級市場 OpenSea 又提供哪些 Metadata 可以使用。
Thumbnail
2022/05/18
在這裡,我們會分析為甚麼發行 NFT 會需要利用 IPFS 來做, IPFS 是甚麼?以及實際操作如何使用 Pinata 的服務將想要上傳的檔案放到 IPFS 網路上。從這裡出發,開始擁有第一張去中心化圖片吧!
Thumbnail
2022/05/18
在這裡,我們會分析為甚麼發行 NFT 會需要利用 IPFS 來做, IPFS 是甚麼?以及實際操作如何使用 Pinata 的服務將想要上傳的檔案放到 IPFS 網路上。從這裡出發,開始擁有第一張去中心化圖片吧!
Thumbnail
看更多
你可能也想看
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
在上一章有提到區塊鏈主要是一些點到點的交易紀錄,就像我們一般在買東西一樣,要完成一樁交易會有幾個要件:消費者、供應者、第三方見證者、費用以及商品,在區塊鏈上的交易(Web3稱為鑄造Mint)也是如此,這一章就來了解一下這幾個重要角色。
Thumbnail
在上一章有提到區塊鏈主要是一些點到點的交易紀錄,就像我們一般在買東西一樣,要完成一樁交易會有幾個要件:消費者、供應者、第三方見證者、費用以及商品,在區塊鏈上的交易(Web3稱為鑄造Mint)也是如此,這一章就來了解一下這幾個重要角色。
Thumbnail
Step1: 打開官方編輯器remix 你可看到下remix下面會有你剛剛部屬的合約展開後會出現很多按鈕 Step2: 設定ipfs位置 找到按鈕 setBaseURI 使用 META_JSONS 的 CID(記得後面要加/) 例如:ipfs://你NFT的CID/ (這邊要特別注意加上/鍵因為nf
Thumbnail
Step1: 打開官方編輯器remix 你可看到下remix下面會有你剛剛部屬的合約展開後會出現很多按鈕 Step2: 設定ipfs位置 找到按鈕 setBaseURI 使用 META_JSONS 的 CID(記得後面要加/) 例如:ipfs://你NFT的CID/ (這邊要特別注意加上/鍵因為nf
Thumbnail
非同質化代幣的結果,什麼東東霧殺殺,既然對於定義很模糊,不然看看有什麼應用好了,得到的結論大概是,我好像可以也發行一個自己的 NFT ?把我旅行中拍到的照片結合了我畫的貓咪創造出的作品鑄造成 NFT,也許這是目前為止最適合保存這類作品的方式〔Matters及其他寫作的平臺太多還是比較著重在文字〕,有
Thumbnail
非同質化代幣的結果,什麼東東霧殺殺,既然對於定義很模糊,不然看看有什麼應用好了,得到的結論大概是,我好像可以也發行一個自己的 NFT ?把我旅行中拍到的照片結合了我畫的貓咪創造出的作品鑄造成 NFT,也許這是目前為止最適合保存這類作品的方式〔Matters及其他寫作的平臺太多還是比較著重在文字〕,有
Thumbnail
這篇會是端午節 NFT 系列的最後一篇文,同時也是這個系列中最核心的部分,我們終於要來實際鑄造產生 NFT,並在 OpenSea 上看看結果了,有興趣的話就繼續看下去吧。
Thumbnail
這篇會是端午節 NFT 系列的最後一篇文,同時也是這個系列中最核心的部分,我們終於要來實際鑄造產生 NFT,並在 OpenSea 上看看結果了,有興趣的話就繼續看下去吧。
Thumbnail
這次的 NFT 開發,希望讓讀者們在實作時,盡量用最少的程式碼也能夠完成你的 NFT 作品,而這篇文章可以當做是一個暖身,我們會大致瀏覽本次開發 NFT 所需要用到的一些工具與小知識,大概整理之後暫時先分為六大主題...
Thumbnail
這次的 NFT 開發,希望讓讀者們在實作時,盡量用最少的程式碼也能夠完成你的 NFT 作品,而這篇文章可以當做是一個暖身,我們會大致瀏覽本次開發 NFT 所需要用到的一些工具與小知識,大概整理之後暫時先分為六大主題...
Thumbnail
IOS手機板狐狸錢包MINT圖解 希望這一篇文章能夠減低你們的焦慮感,不要被一堆英文和數字嚇到,如果有不清楚的話也歡迎留言唷
Thumbnail
IOS手機板狐狸錢包MINT圖解 希望這一篇文章能夠減低你們的焦慮感,不要被一堆英文和數字嚇到,如果有不清楚的話也歡迎留言唷
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News