【端午企劃】發行 NFT 必備的六項知識 | 智能合約開發計劃 #5
端午節 NFT 開放預約!
2022很快地來到了Q2,在一月份時我曾經撰寫了如何發行 ERC-20 的代幣,最後也實際在 Polygon 主網路上發行了自己的「科技幣 (IT Coin, ITC)」並空投給讀者。
隨著新企劃的開始,科技隨筆開放科技幣持幣者搶先填表單預約領取免費的 NFT 空投,表單網址:
https://forms.gle/kEfQW7JPfbE3CGdX6
若你手上沒有之前空投的科技幣也沒關係,如果還有剩餘名額的話,下週我會再另外開放一個新表單讓非持幣者也能填寫哦!
其他詳情請看之前的文章:
【空投獎勵】科技隨筆讀者回饋 | 端午節 NFT 發放預約
開發 NFT 所需的六項知識
這次的 NFT 開發,我會希望讓讀者們在實作時,盡量用最少的程式碼也能夠完成你的 NFT 作品,而這篇文章可以當做是一個暖身,我們會大致瀏覽本次開發 NFT 所需要用到的一些工具與小知識,如果有些地方不太清楚或是有錯誤的話歡迎再底下留言給我,這樣也方便我在後續的文章做些調整,大概整理之後暫時先分為六大主題:
1. ERC 代幣協議
2. 智能合約、Solidity 與 Remix
3. 以太坊 Rinkeby 測試網
4. Openzeppelin
5. IPFS 星際檔案系統
6. OpenSea 與 Meta data
請特別留意!由於這篇有些東西會需要連線到外部網址,所以我會特別都把網址打出來,這些網站都絕對不會要求你輸入任何錢包的私鑰或助記詞,或是要求你要先付錢才能使用,記得在操作前都要對一下網址,免得不小心掉入詐騙或釣魚網站中了。
1. ERC 代幣協議
最早的 NFT 是在以太坊上出現的,這次開發也是採用以太坊的代幣協議標準,如果你還不清楚 ERC 或 EIP 是什麼的話,可以參考之前的文章:
【區塊鏈知識】快速瞭解以太坊的 ERC 與 EIP
接著如果能瞭解 ERC-20、ERC-721、ERC-1155 這三個以太坊代幣協議的標準,知道他們之間的差異,就會更瞭解一般的代幣與我們常聽到的 NFT 有甚麼相同之處,它們之間的差別是甚麼,如果懶得找網路上的資源,也可以參考之前的文章:
【區塊鏈知識】一文讀懂甚麼是 NFT 與代幣 | ERC-20 ERC-721 ERC-1155
這次我們將使用 ERC-1155 協議來開發 NFT ,若要問為甚麼不用 ERC-721 或 ERC-20 而是用 ERC-1155 的話,就是因為我只是想要發行一張圖片的代幣,作為端午節禮物空投分送給讀者們做紀念而已,所以本次發行的 NFT 其實就單純一種而已,如果選擇用 ERC-1155 來做的話,在鑄造時因為可以直接對同一個 ID 鑄造多個一模一樣的 NFT,要上鏈的東西少了自然在手續費的消耗也會變少哦!
2. 智能合約、Solidity 與 Remix
這三個東西我們在開發 ERC-20 時其實都已經講過了,如果可以的話先回去看看之前文章中提到的部分,文章連結為:
【新年企劃】過年就包紅包幣 | 智能合約開發計劃 #1
但這邊我還是稍微寫個懶人包帶過去吧。
我們所編寫的程式碼,在開發完以後會需要放到區塊鏈上運作,這些在區塊鏈上運行的程式碼就稱為「智能合約」,就像智能自動販賣機一般,程式碼一但上線了就可以為任何人提供服務。
Solidity 是一種為了撰寫智能合約而誕生的程式語言,藉由 Solidity 我們可以編寫出具有商業邏輯的應用程式,並在編譯後能夠在以太坊虛擬機 (EVM) 上自動運行這些服務。對於寫過程式的人而言,在學習 Solidity 時雖然邏輯與其他程式語言差不多,但是要多了解一些商業的知識,不然沒辦法完全地看懂程式碼!
如果要看 Solidity 最新版本以及其他詳細官方文檔可以參考網址:https://docs.soliditylang.org/
Remix 是以太坊提供給開發者的線上 Solidity 程式語言編輯環境,網址是:https://remix.ethereum.org/
我們所有的程式開發與部屬程式碼到區塊鏈上都會透過 Remix 來進行操作,這樣可以捨去非常多在自己電腦上安裝環境的事情,大幅降低開發智能合約的門檻,能讓一些新手讀者在真正去實作的時候更容易有「第一次動手寫程式打造一項產品」的體驗。
3. 以太坊 Rinkeby 測試網
這部分一樣可以先參考之前開發 ERC-20 的第一篇文章中,連結會附在最下方延伸閱讀。
那時我們使用的測試網是 「Kovan 測試網路」,這次開發我們將換到另一個測試網路叫「Rinkeby 測試網路」,嗯…如果你要問我不同測試網路的差異,我其實也不太瞭解,但可以確定的是它們都可以在上面部屬並執行以太坊虛擬機 (EVM) 兼容的智能合約,所以我想如果你還想打算繼續使用 Kovan 測試網的話也可以,理論上應該是不會有甚麼差別才對。
在 Metamask 開啟所有測試網路的設定方式:右上角大頭貼 → 設定 → 進階 → Show test networks。
免費領取 Rinkeby 測試網上的以太幣連結:https://faucets.chain.link/rinkeby
4. Openzeppelin
對於要開發 DeFi、Dapp 等智能合約功能的開發者而言,使用 OpenZeppelin 的開源工具會是很好的開始。它是一個開源的智能合約函式庫,就像一個工具箱一樣,把我們可能會用到的功能都先開發好了,我們只要拿對工具來使用就可達到想要的功能,而且因為程式碼是開放給大家使用的,表示有無數人查核過這些程式碼,雖然還是不能完全保證程式碼沒有問題,但使用時會相對安全。
事實上 Openzeppelin 是一間公司,它們的主要業務大概是提供工具讓開發者更方便開發與管理智能合約以及提供智能合約程式碼資安方面的審計,在官網上可以看到一些它們參與過很有名的專案開發或協助審計,例如 Brave 瀏覽器、Compound 借貸平台,官方網站網址是:https://openzeppelin.com/
這次我們會用到 Openzeepelin 的函式庫來開發 NFT,將需要撰寫的程式碼降到最少,能稍微讓沒寫過程式的人有一種在做程式開發的感覺,應該會蠻有趣的!它們也有撰寫文件讓開發者更容易使用開發智能合約,文檔網址是:https://docs.openzeppelin.com/contracts/
5. IPFS 星際檔案系統
IPFS 星際檔案系統是一種分散式檔案儲存系統,跟使用雲端服務差不多的地方就是你並不知道自己的檔案被存到哪裡去了,但與雲端服務的差別是雲端服務通常都需要有超大型的資料中心來保管資料,所以可以看成是中心化的儲存,而 IPFS 是去中心化的儲存,你的資料會儲存在非常多不同的節點,好處是資料不容易丟失,但壞處是對於不常使用的資料讀取所需的時間可能會比較久。
這跟我們要開發 NFT 有甚麼關係嗎?
如果你有在檔案總管看過圖片的大小,應該就知道一張圖片隨便就好幾 MB,資料空間會是文字的數千數萬倍以上,若我們要將圖片傳到區塊鏈上要付出非常龐大的手續費才能做到,是非常不切實際的動作,現在主流的 NFT 專案幾乎都是先將圖片存到雲端再將網址複製出來放到區塊鏈上,但要是存在個人網站或一些中心化的地方,很有可能因為服務停止或遭到攻擊導致資料無法讀取,那我們就不能保證未來五年十年這個 NFT 網址所對應到的圖片會不會消失,如果是使用 IPFS 來存放圖片,由於資料存放時會產生獨一無二的哈希值,並分散存放在礦工的硬碟中,相較於中心化或私人化的儲存,存放於 IPFS 的儲存方式會更不用擔心圖片丟失。
6. OpenSea 與 Metadata
OpenSea 是目前全世界最大的 NFT 二手交易市場,如果要讓自己鑄造出來的 NFT 可以在 OpenSea 上面顯示一些自己想要的內容,可以去參考官方所撰寫 Metadata 規格書,透過這種方式去看看我們的 NFT 需要哪些功能,就可以知道要附甚麼資訊在裡面,介紹 Metadata 的同時也會順便介紹甚麼是 json 格式,如果有興趣的話可以先去查資料嘗試瞭解看看,之後的文章都會提到哦!
這裡附上 OpenSea 關於 Metadata 的官方文檔網址:https://docs.opensea.io/docs/metadata-standards
以及 OpenSea 的官網網址:https://opensea.io/
事前準備
以上大致將這次我們開發 NFT 會用到的內容,我把它大概切成六大點,而一些更基本的內容,例如:如何申請 Metamask 錢包、如何添加切換測試網以及去水龍頭領取免費的測試網以太幣等,這部分可以回去之前的文章看看。
接下來的文章我們會一步一步將圖片上傳至 IPFS ,再發行自己獨一無二的 NFT 哦,可以先準備好一張自己想發的圖片,敬請期待啦!
延伸閱讀
第一篇:【新年企劃】過年就包紅包幣 | 智能合約開發計劃 #1
上一篇:【新年企劃最終章】大割的韭菜幣 | 智能合約開發計劃 #4
最後,謝謝你在百忙之中願意抽空來花時間來看我的文章,如果還喜歡這些內容的話希望能獲得你的追蹤及小額贊助支持,讓我更有繼續寫下去的動力,也歡迎點此連結在其他平台找到我。
下次見嚕 o((>ω< ))o~
原文連結 ITechNote 科技隨筆
喜欢我的作品吗?别忘了给予支持与赞赏,让我知道在创作的路上有你陪伴,一起延续这份热忱!
![](https://imagedelivery.net/kDRCweMmqLnTPNlbum-pYA/prod/avatar/b97c404a-f5e7-4db3-86f5-e6627dcdc765.png/public)
![logbook icon](https://assets-next.mattersprotocol.io/_next/static/media/logbook.2cfac4f7.gif)
- 来自作者
- 相关推荐