昨天我們大致講解了BAYC的合約是如何運行,並發現了不少漏洞以及可以改進的地方。今天讓我們來把剩下的baseURI
講完,以及解釋圖片到底存在哪裡吧!
首先我們可以很明顯的發現這條函式是用來設定baseURI的值,但是這個值到底是甚麼?
讓我們切回Etherscan的Read Contract上,看看現在的baseURI值是多少...
原來是一串網址! 而且後綴要填上BAYC的代幣號碼
那... 這又會導到哪裡呢? 讓我們把數值放入0搜尋看看
https://ipfs.io/ipfs/QmeSjSinHpPnmXmspMjwiXyN6zS4E9zccariGR3jxcaWtq/0
得到了一個JSON
格式的檔案,第一行有個命名為image(圖片)
的資料,並提供了另一串IPFS網址
第二行裝的則是attributes(屬性)
,下面有不少部位的名稱像是背景、嘴巴、眼睛等等,並有對應的值
讓我們先打開image看看
果真是得到一枚BAYC代幣的圖片檔,且與剛剛JSON提到的屬性也都有所對應
讓我們回到OpenSea上面比對一下,確認與編號#0的BAYC一致
而通常那第一串IPFS的連結就會被大家稱作Metadata,其意思就是「裝著某個資料的資料」
不過... IPFS到底是什麼呢?
IPFS(星際檔案系統)
,是一套概念與區塊鏈相似的檔案儲存系統。其運作原理結合了多項技術,包括BitTorrent
、Git
、DHT
、SFS
等,目的就是打造一個去中心化的儲存世界。與比特幣以太坊相似的是,所有人皆可上傳、查閱所有檔案,而特別協助儲存資料的用戶也可以獲得$FIL幣當作獎勵。
更詳盡關於IPFS的介紹可以參考這個影片,花10分鐘帶你了解其如何運作:
到這裡一定會有人這樣問,為什麼不把圖片存在以太坊就好了?
其實是可行的,只是這並不符合以太坊原本的目標,所以大部分的資源都是集中在運算上而非儲存上,這也將導致你需要花費大量的gas fee,假設以太幣價格為$2000美元,大約每上傳1kb的資料就會花費你$20美元喔!
這是解析智能合約的最終章了!恭喜大家知道目前市面上普遍的NFT項目及智能合約是怎麼運作的了,因為篇幅問題沒辦法依依跟大家講太細節,不過歡迎大家透過下面的參考資料DYOR喔!
<上一篇> [Day 21] 從BAYC猴子的智能合約 看懂背後運作原理(三)其實BAYC的合約有漏洞!
<下一篇> [Day 23] 新手也能創造NFT! OpenSea上手,3分鐘販賣你的NFT
參考資料: