【端午企劃】我的第一張去中心化圖片! | 智能合約開發計劃 #6
端午節 NFT 全面開放預約!
2022很快地來到了Q2,在一月份時我曾經撰寫了如何發行 ERC-20 的代幣,最後也實際在 Polygon 主網路上發行了自己的「科技幣 (IT Coin, ITC)」並空投給讀者。
隨著新企劃的開始,科技隨筆開放科技幣持幣者搶先填表單預約領取免費的 NFT 空投,若你手上沒有之前空投的科技幣也沒關係,自 2022/05/19 00:00 全面開放表單預約了!經過第一輪 ITC 持幣者填寫並核對資格以後,剩餘 18 個免費領取 NFT 的名額,想領取的話會需要你追蹤任一科技隨筆平台或加入任一科技隨筆社群(我會檢查),本表單將依照填寫時間排名,額滿就不會再另行通知了哦!
表單連結:https://forms.gle/fvk63YT3wcN2xvQCA
第一輪表單填寫經檢查後符合領取資格名單已經在群組中公布了,還沒填寫領取的人趕快手刀填寫吧。
NFT 的圖片是安全的嗎?
現在常見的 NFT 通常都是看到一張圖片,如果你有在檔案總管看過圖片的大小,應該就知道一張圖片隨便就好幾 MB,資料空間會是文字的數千數萬倍以上,若我們要將圖片傳到區塊鏈上,會需要付出非常龐大的手續費才能做到,是非常不切實際的動作,所以現在主流的 NFT 專案幾乎都是先將圖片上傳到網路上,再將網址複製出來放到區塊鏈上,以節省上鏈所需的費用。
看起來 NFT 背後網址對應到的是一個存放這個 NFT 圖片的地方吧!隨之而來的問題就浮現了,這個網址是可靠的嗎?
以我自己的網站做舉例,這篇文章精選圖片的網址是放在科技隨筆的網域對應到的虛擬主機之中: https://itechnote.co/wp-content/uploads/2022/05/IPFS_Pinata.png,如果用此圖檔網址來發行 NFT,那些二級市場或是可瀏覽 NFT 的錢包會透過網址抓取到圖片顯示給使用者看,NFT 就做完了看起來沒問題。
但經過 N 年後的某天,這個虛擬主機與網域若沒有繼續租用了,這些 itechnote.co 開頭的網址對應到的網頁自然也就不復存在了,用這個網址發行的 NFT 更是不可能再找到對應的圖案,它會不會變成「404 not found」的打叉型 NFT 就非常值得深思。
如果圖片是放到雲端,也有可能因為科技公司倒掉或是他們進行了雲端業務調整使得圖片網址有更動,NFT 也會找不到對應的圖案。
存在個人網站或一些中心化的地方,很有可能因為服務停止或遭到攻擊導致資料無法讀取,那我們就不能保證未來五年十年這個 NFT 網址所對應到的圖片會不會消失,如果是使用 IPFS 來存放圖片,由於資料存放時會產生獨一無二的哈希值,並分散存放在礦工的硬碟節點之中,相較於中心化或私人化的儲存,存放於 IPFS 的儲存方式更不用擔心圖片丟失(但仍不能保證一定不會遺失)。
IPFS 星際檔案系統
IPFS (InterPlanetary File System)星際檔案系統是一種分散式檔案儲存系統,跟使用雲端服務差不多的地方就是你並不知道自己的檔案被存到哪裡去了,但與雲端服務的差別是雲端服務通常都需要有超大型的資料中心來保管資料,所以可以看成是中心化的儲存,而 IPFS 是去中心化的儲存,你的資料會儲存在非常多不同的節點,好處是資料不容易丟失(由於系統設計的機制不能保證資料一定不會遺失),但壞處是如果圖片檔案較大的話儲存時會被切割成比較多份,分開存放到不同的節點中,這導致資料讀取所需的時間可能會比較久。
IPFS 就像我們日常使用的 HTTP 一樣,本身算是一個網路協議,每個資料被儲存時會產生獨一無二的哈希值,這就像網域中的 IP 一樣是唯一的。
在網際網路的使用上 IP 很不好記憶,所以 IP 網域會透過網域名稱系統(DNS)轉換到一個網址,如果對網址不太熟悉沒關係你可以實作這個範例看看,一般來說我們要連上 Google 首頁,就會在瀏覽器上打上「google.com」,你可以嘗試看看在瀏覽器打上它背後的 IP 「142.250.179.206」,輸入後一樣可以連到 Google 首頁,這是因為當我們輸入 google.com 之後,瀏覽器會先去 DNS 找到 google.com 對應的 IP (142.250.193.206),再用此 IP 連線到 Google 的伺服器;IPFS 也有一樣的域名系統(IPNS)在做類似的事情,把哈希值轉換成更容易看懂的符號,提高資料讀取的效率。
就像大部分的人會使用 https 的網路協議服務一樣,人們往往不太需要了解背後的原理,很多時候面對這些新科技只要學著如何使用就足夠了,接下來會著重在如何將自己的圖片上傳到 IPFS ,我們現在只要知道 IPFS 是一個分散式儲存的網路協議,放在上面的資料比起一般私有或中心化的儲存方式更安全,但仍不能保證資料不會丟失。許多 IPFS 更細節的東西未來如果有機會再寫一篇文章介紹它。
正常來說,要使用 IPFS 星際檔案系統進行上傳或下載資料,就必須要在自己的電腦下載安裝並配置一個新的 IPFS 節點才能做到這件事情,我們只是想要上傳個圖片用來做 NFT ,卻要花費大量電腦資源部屬 IPFS 節點是不是有點小題大作了,部屬過程繁雜冗贅完全不符合效益,所以我們要使用一個免費的工具來上傳圖片到 IPFS 之中,它就是「Pinata」!
Pinata
Pinata 是一個能夠讓人將資料存放到 IPFS 上的服務,提供 1GB 的免費儲存空間可以使用,對於要做 NFT 的我們而言,這空間拿來存圖片綽綽有餘了。
網站網址是:https://www.pinata.cloud/
進去之後官網上看到大大的標語寫著「Your Home For NFT Media. The cloud wasn’t built for this. Pinata was. Managing your NFT media just got easier.」看來發 NFT 用 pinata 應該是選對了。
進到首頁以後,右上角「Try for free」先註冊登入成為 Pinata 的會員。
註冊完成後再重新登入之後就會進入到這個頁面,這個頁面就是 Pinata 主要的畫面,不管是要上傳資料還是查詢以前上傳的資料都是在這裡運作。
右上角的黃色小視窗也有提醒我們,IPFS 是一個公開網路,所有發上 IPFS 的資料只要有對應的 CID,任何人都是可以隨意瀏覽的,不要發布自己的重要資訊上去哦!
上傳我的第一張去中心化圖片
終於來到本篇文章的主角了,在 Pinata 上傳我們之後要做 NFT 的圖片。
在畫面的左上方有一個「+ Upload」的按鈕,點下去之後會有三種可以上傳的東西:
「Folder」可以上傳整個資料夾。
「File」就是上傳檔案,不管是文字檔、圖片或影片都算 File。
「CID」是在 IPFS 上類似網址的東西,所有放在上面的資料夾或是檔案都會產生一組 CID,上傳 CID 的用意大概是對這個 CID 再 Pin 一次,在 IPFS 中由於網路很大資料很多,這個 CID 如果被 Pin 就等同於告訴 IPFS 「這個檔案很重要」,讓 IPFS 能夠在節點中更長期地保留此檔案,減少因為無人訪問導致該資料最後被 IPFS 清除。
這裡我們要選擇 File,選擇後就會看到底下三個步驟:
第一步:從我的電腦中上傳檔案,點擊「Select a file」開啟檔案總管選擇要上傳的圖片。
第二步:幫這張圖片取個檔名吧(預設是原本的檔名)。
第三步:上傳中,上傳過程會花一些時間,如果在轉圈圈請耐心等它轉完,不要關掉視窗。
成功上傳的話,你就會看到剛剛命名的名稱出現在首頁中,隨之而來會產生一組 CID ,做到這裡就已經把圖片成功上傳到 IPFS 上面了。
讀取去中心化圖片
前面提到成功上傳之後會得到該檔案的 CID,透過這個 CID 我們就可以在 IPFS 上找到,若想看到剛剛上傳的圖片方法有蠻多種的,這裡舉兩種讀取的方法,並用我剛剛上傳科技隨筆 Logo 獲得的 CID 為例 (QmYHiLbYTK9hMpGwLdG9JZvStRGfBaFwv6XEW2JaENuBox) 讓大家試試看:
1. 使用 IPFS 讀取
直接在支援 IPFS 的瀏覽器上輸入 ipfs://{#你的 CID } 。
這個操作需要使用支援 IPFS 的瀏覽器,我目前測試都是用 Brave 瀏覽器,它是使用 Chrome 瀏覽器作為底層重新開發的,所以使用上跟 Chrome 蠻像的,你可以下載來試用看看,網址:https://brave.com/。
就像一般網際網路連線的 http:// 或 https:// 開頭,如果要瀏覽 IPFS 網路,就要以 ipfs:// 為開頭,後面直接貼上 Pinata 上的 CID,就可以看到剛剛上傳的圖片了。
輸入 ipfs://QmYHiLbYTK9hMpGwLdG9JZvStRGfBaFwv6XEW2JaENuBox 就可以看到我之前上傳的圖片了。
但要注意由於 IPFS 網路相當的大節點非常多,檔案上傳的過程需要不少時間,所以剛上傳的圖片直接使用 ipfs:// 查詢可能會找不到,保險一點可以多等個一個小時再回來試試看,第一次讀取圖片可能也要花費數分鐘才能顯示,按下 Enter 鍵後喝杯咖啡再回來看看結果吧。
2. 使用 HTTP 讀取
透過 pinata 本身的 gateway 服務直接抓取圖片 https://gateway.pinata.cloud/ipfs/{#你的 CID } 。
直接點剛剛上傳的檔名,像我這邊的例子就是點擊 Name 底下紫色的「ITechNote_Logo.png」,就會連到這裡 https://gateway.pinata.cloud/ipfs/QmYHiLbYTK9hMpGwLdG9JZvStRGfBaFwv6XEW2JaENuBox。
你會發現其實這個網址就是 https://gateway.pinata.cloud/ipfs/{#你的 CID },由於是 https:// 開頭的,所有的瀏覽器都可以連到 pinata 看到這個圖片。
結語
以上就是利用 Pinata 上傳檔案到 IPFS 上的方法,恭喜大家得到了第一張自己的去中心化圖片,當然你也不一定要上傳圖片,上傳文字檔、影片、整包資料夾都是可以的,如果你對於 IPFS 技術的使用上,想到什麼有創造力的使用方式或各種 idea,歡迎再回來與我交流交流。
延伸閱讀
第一篇:【新年企劃】過年就包紅包幣 | 智能合約開發計劃 #1
上一篇:【端午企劃】發行 NFT 必備的六項知識 | 智能合約開發計劃 #5
最後,謝謝你在百忙之中願意抽空來花時間來看我的文章,如果還喜歡這些內容的話希望能獲得你的追蹤及小額贊助支持,讓我更有繼續寫下去的動力,也歡迎 點此連結在其他平台找到我。
下次見嚕 o((>ω< ))o~
原文連結 ITechNote 科技隨筆