KryptoCamp — Day20 — NFT 與 IPFS 的結合

Galen-Ting
廢物到工程師的一大步
5 min readMar 7, 2022

到昨天了解了 IPFS 與 ERC-721 token 的基礎使用,今天接著了解如何把兩者結合在一起,並且發行 NFT。

通常在發行 NFT 的時候常常會有所謂的盲盒階段,在鏈上這個盲盒算是真正的盲盒嗎?其實你的盲盒在某種程度上不算是真正的盲盒。

你的盲盒不是真正的盲盒

我們可以看到這個影片最後面提到的盲盒開發方式,基本上可以認為你在 mint 得到 NFT 的當下就已經決定了你的 NFT 是什麼,因為他的 IPFS 檔案已經對到了你的 ID,只是還沒有連線到那邊而已。

我們實際將自己的合約改成由 nic 提供的合約,並做小幅的修改,我盡量詳細地將我對合約內 function 的理解記錄了下來。

程式碼來自 nic 提供的 sample 檔:位置在 https://github.com/niclin/nic_meta

了解了合約之後接著我們要進行部署,部屬的方式很簡單,因為我們已經把 config 寫好,我們唯一需要做的就是直接利用我們已經寫好的腳本把合約部署到測試鏈上。

部署完後就可以在 rinkeby 的 etherscan 看到對應的合約。

https://rinkeby.etherscan.io/address/0x9da3F2eeeF5a4f5ee50175B63b4AA1Fa12973172

那我們如何與合約互動呢?為了要與合約互動我們需要一個與合約互動的介面,而這大部分是在前端才能完成的事情。這時候就需要用到 ethers.js 或是 web3.js 了。

如果還不了解這兩者,這篇文章很好的說明了兩者的不同。

不得不說這個部分對我來說是比較困難的,我並沒有太多關於 JavaScript 的經驗,對於 React 更是從來沒有寫過。在這個部分很難有進展,因此我將先改為使用 Remix 部署合約,節省掉撰寫前端的部分。

將以上的 NFT 程式碼放到 Remix 裡面,直接切換到測試網進行 deploy 。
依照教學影片做的,總算是在 opensea 的測試網成功看到了 NFT。

測試網連結:https://testnets.opensea.io/

如果想要放上圖片,則需要依照教學影片接續進行。

盲盒狀態
開盒狀態

依照教學一步一步完成了第一次 NFT 發行。

AMA 插播:ERC-20 的標準

其實所謂的轉帳,並不是真的把錢轉到哪個地方,所有關於餘額的資訊都寫在合約本身裡面,只是把地址的 mapping 的數字減掉並且把目標地址的數字增加,僅此而已。

而所謂的 approve,會切換一個叫做 _allows 的 mapping 資料,表示某個地址允許另外的哪個地址消耗他多少的金額。

內含的 decimals 主要是用於前端,讓他們知道一個 wei 的值應該是多少 token。

像是 USDT 這樣的 token 其實可以凍結你的資產,可以查看合約 transfer 部分。有一個 Blacklist 的檢查,如果你的地址被放進這個列表裡面,你將再也無法交易 USDT。

https://etherscan.io/address/0xdac17f958d2ee523a2206206994597c13d831ec7

關於 swap

--

--

Galen-Ting
廢物到工程師的一大步

學程式不無聊,無聊就不學程式,皮皮的學習好過死死的學習。