之前在其他文章 數位發展部的 IPFS 系統架構官網抄底 LUNA 幣 談過 Web3 話題,這次又來分享一些在自家網站嘗試發 NFT 的心得。

如果這樣敘述: 我做了一個購物網站
開始購物之前要先註冊,
第一次註冊還要先下載一個軟體,
在每個網站購物,要下載的軟體可能都不一樣,
軟體註冊完成通常會顯示十幾組英文單字,要自己記起來,
等一下會考剛剛的英文單字是什麼,
要開始結帳前要先檢查自己有沒有選對購物車種類,
有的軟體沒有購物車基本資料,還要自己先建檔,
然後交易手續費就算只有台幣幾十塊,一次要先刷台幣 1000 元以上,
想省錢的話可以刷外幣再換匯,但是換匯選錯的話錢會不見。
東西買到之後,還看不到自己買的東西長怎樣,
有些商品,還要回到在一開始下載的軟體裡面填資料,才會知道自己買的東西長怎樣,

一聽可能會覺得什麼購物網站設計得這麼神奇? 但這個就是…NFT!

如果以買 NFT 是要來轉手賺錢的思維,那些玩家會說我們看的是發行 NFT 的人背後的資本可以為我們帶來什麼好康、在社區中可以交朋友、獲得參與,感受藝術作品中的文化和創作理念,什麼圖片好看不好的? 那些太膚淺了。
而現在 2022 年 9 月,剛好碰到熊市,不少之前火紅的 NFT 項目,以幣本位的邏輯來說,有些已經跌破發行價(破發)、整個系列的地板價也一再下探;用 u 本位來說,整個市場幣價在相對低點,要買一顆 BTC 只剩 19000 美元、要買一顆 ETH 只剩 1300 美元,雖然很高,但至少沒像牛市時價格這麼高,當初加密貨幣->美金->台幣換算要幾百萬元的 NFT,現在換算下來可能價值對半砍了。有些人可能覺得無利可圖,就暫時退燒了。而流動性衰減對於這種想靠買賣 NFT 賺錢的,無疑是一大打擊。

而以網頁程式、廣告行銷的思維,民眾覺得 NFT 好像退燒了,但還是看到不少大型企業還在辦活動發新聞稿說要發 NFT、搞元宇宙,或是正在辦 NFT 活動,這些有可能是之前 NFT 熱戀期的時候開始規劃,現在終於上線了,或是 NFT 活動已經辦完了,馬照跑舞照跳,曾經許諾的美好未來好像也沒到來、有的沒的賦能好像也沒啥用? 難怪聽到搞 Web3,就彷彿一群跟風撈仔在搞事。像這個月(2022/9)星巴克還說要搞 Web3 平台,結合會員制和 NFT,似乎就不被看好。

其實今年中秋節想說自己弄網站來發免費 NFT,體驗看看 Web3 的區塊鏈世界到底有什麼魔力?
但剛好碰上以太坊升級,就把優先順序往後調,本來想像…
以太坊升級合併之後出現故障,幣價下跌,幣價下跌表示 ETH 換美元變得更便宜,就等同於在以太主網開發區塊鏈程式時所需要的各種上鏈費用降低….整套推論看似完美無瑕,結果以太坊 2.0 根本沒有故障
以太坊升級合併之後,Gas fee 會馬上降低?…結果也沒有,還是遠比其他鏈貴上不少。(以太坊基金會:「合併升級」不會降低 Gas 費用Ethereum Average Gas Price)

一個小目標

想發 NFT,直接去 OpenSea 之類的 NFT 市集,自己上傳 JPG 或影片之類的多媒體檔案就好了(這種二級市場通常會抽 5% 以上)。如果是知名藝術家或繪師,肯定還有一堆 NFT 代上架的蹭上門,沒被開發到的表示可能表示不夠紅。不然還可以去夜市找上架 NFT 的

作為網頁設計師和工程師,當然是要自己弄個網站讓人鑄造 NFT 才酷,計畫是這樣:
1.在自己的網站發,使用者拿錢包登入就能領
2.規劃一個最基本的使用場景,若某人擁有 NFT,在開網頁時可以檢查錢包並做出對應的訊息。

NFT 免費鑄造,沒有想要用 NFT 賣錢,如果覺得自己錢太多沒地方花的,一些市集有救助流浪狗的 NFT 可以買。

講到 NFT 做圖,Photoshop 之前某一版更新後,Adobe 直接簡單粗暴地在選單裡塞了一個選項,點了會連到一個說明頁 How to use Content Credentials (Beta) in Photoshop for NFTs

大致就是把錢包跟 Adobe 帳號連結後,儲存圖片時可以勾選 Content Credentials,把設定好的一些資訊塞進去。

讓使用者自己領 NFT 的 dAPP 使用者體驗設計研究

在測試自架 NFT 發行網站的時候,發現跟電商購物相比,Web3 的使用者體驗真的是非常差啊!
如果要跟電商追蹤一樣埋轉換漏斗,流程可能有 N 步,還有一大堆步驟都是跳離原本網頁操作,根本無法追蹤的。

經常接觸 Web3 的人(只有在交易所 APP 直接刷卡買幣交易的不算) 對於一切步驟和名詞應該駕輕就熟,但如果是連上網訂票和預約打疫苗都要看說明書的,又沒潛在動力(幻想領到 NFT 賣掉轉手可以賺好幾倍),中間有許多難關對使用者來說簡直難如登天,放棄率非常高,以下會一一提到。

我不是用空投的(AirDrop)的或是發兌換碼之類的,接下來以「使用者用自己的 MetaMask 錢包來領」,從「沒有錢包」到「領完可以在手機 MetaMask APP 看到圖片」為例,把流程大致走一遍。

註冊加密錢包與授權

加密錢包是 De-Fi 等各種 Web3 去中心化應用程式的基礎,錢包可以儲存、傳送和接收各種類型的 token,使用者透過錢包和 dAPP (Decentralized Application, 去中心化應用程式)進行資料交換。錢包又有分熱錢包和冷錢包(離線錢包),MetaMask 狐狸錢包是屬於熱錢包。

通常電腦瀏覽器打開網頁或是點按鈕開始操作之後,錢包就會跳出要求授權,授權之後拿到錢包地址,網頁才能判斷使用者是否已經領過 NFT 之類的,但是這個授權視窗可能也有假的,Web3 時代的釣魚詐騙手法…

第一步就是先註冊錢包,如果使用者不知道什麼是錢包,以為只是填一些個資就能領東西,點下去可能會不知所措,只會看到一堆按鈕…

WalletConnect 聽起來很像某種錢包產品,使用者可能想說:
我沒註冊過 WalletConnect 啊?
我已經註冊過某某錢包了,才不要去點 WalletConnect 呢,
為什麼沒有註冊過的某某錢包讓我點呢?
但 WalletConnect 就是讓人選錢包的,要先點 WalletConnect 才能選錢包…

錢包有好幾頁,但也不能亂選亂下載,首先還要先知道這個 NFT 是用哪個區塊鏈發行,我的 NFT 是在 Polygon 鏈上面的,所以用 MetaMask (狐狸錢包)就可以了。
例如之前阿妹演唱會的 ASMeiR NFT 是在 Tezos 區塊鏈上發行,狐狸錢包現階段是不支援的 Tezos 鏈的,一定要另外下載安裝註冊 NFT 所能接受的錢包。

註冊錢包通常不用填姓名出生年月日手機號碼住址email,只要設一組密碼,然後錢包會給一大串英文單字(mnemonic phrase, 註記詞),下一步驟會考說剛剛有哪些單字。錢包的主要操作就靠這些東西(或是靠私鑰),忘掉就沒救了。就像在銀行,就算本人在場,證件印章沒帶齊就是無法辦某些業務,在 Web3 的世界也是一樣,電腦程式管你是不是本人? dAPP 是認錢包,不認人的。

這裡以 MetaMask 做為示範,從 Download MetaMask 下載安裝電腦瀏覽器的擴充套件,然後授權網頁讀取錢包資訊。

把 Polygon 網路加入錢包

好不容易申請錢包了、也授權了,就可以領 NFT 了? 還差得遠! 大概只是西天取經的路上,還在家綁鞋帶的進度而已。
像 MetaMask 內建預設只有以太主網(Ethereum mainnet),但我是用 Polygon 鏈,如果有其他 NFT 或應用是用其他鏈,使用者還要自己把鏈的資訊 key 進去自己的錢包(setting RPC),通常操作說明會看到一串天書一樣的參數:


Add Polygon Network

例如本 NFT 使用 Polygon 鏈,聽說星巴克的 Web3 也是使用 Polygon 鏈,就要在錢包中加入 Polygon 鏈的資訊
– Name:Polygon Mainnet
– New RPC URL: https://polygon-rpc.com/
– Chain ID:137
– Symbol: MATIC
– Block Explorer URL: https://polygonscan.com/

但是這樣有點麻煩,開發者可以參考狐狸錢包的文件wallet_addEthereumChain,讓電腦瀏覽器出現一個快速操作視窗,就不用再讓使用者複製貼上老半天。

也是有些錢包有內建一堆鏈,不用自己手 key。但是領 NFT 不是想用啥錢包就用啥錢包,耶下來又碰到 Web3 dApp 的一大雷。

把錢包切換成 Polygon 網路

這邊又來一個 Web3 使用者體驗地雷,區塊鏈有一堆公鏈(常聽到的以太坊、Solana 之類的)跟一堆私鏈,錢包可能本來已經切換成其他的鏈,這樣是不能領 Polygon 鏈的 NFT 的。
如果錢包的網路選得不對,要再做訊息請使用者手動切換,例如網路上看到的範例(如下圖),網頁會跳出提示訊息,或是按鈕怎麼按都沒反應,原來在最下面有行小字…

NFT 的發行網頁如果想要檢查使用者的錢包,有沒有正確切換成 Polygon 鏈? 可以參考 web3.eth.net 的 getId 用法,先取得使用者目前的錢包是不是正確的 ChainId,像 Polygon 主網的 ChainId 是 137,不是 137 就顯示提示訊息。

常見的 ChainId

Chain NameChain Id (HEX)Chain Id (INT)
eth0x11
ropsten0x33
rinkeby0x44
goerli0x55
kovan0x2A42
polygon0x89137
mumbai0x1388180001
bsc0x3856
bsc testnet0x6197
avalanche0xA86A43114
avalanche testnet0xA86943113
fantom0xFA250
cronos0x1925
cronos testnet0x152338

再參考wallet_switchEthereumChain,讓瀏覽器錢包套件直接跳出一個詢問是否要切換網路的視窗:

這樣應該對使用者比較方便吧? 但是錢包有一大堆,也不一定每個都支援這種提示自動切換的功能,
有時候則是執行得非常慢,要等很久才會跳出來…

免費的 NFT 還要付錢

我設定我的 NFT 是免費鑄造(Mint) 的,但其實使用者要 Mint 的時候還是會跑出金額,必須要支付 gas fee (燃料費)。

Gas fee 是什麼概念? 就像上網登記領免費試用包要自付運費一樣,領 NFT 的時候會把交易資料存到區塊鏈上,這件事必須要支付 gas fee,MATIC 則是 Polygon 鏈的貨幣,系統會在交易前會估計,實際不一定會花到這麼多,以交易當下鏈的壅塞情況、是否要優先處理、當次寫入的資料量大小而定。
為什麼要用 Polygon,不用 Ethereum mainnet? 看下面這張圖就能了解,這個是在建立合約的時候,所需支付的 gas fee (10.點幾元是幣價換算美金),不同鏈的費用就有天壤之別。就是開頭講的,以太坊升級合併之後,Gas fee 沒有馬上降低這回事,必須要再等分片技術之類的機制做完,才有機會再降低 gas fee (或是等以太幣降到1塊錢)。

因為發布合約的資料數據比較大,所以會比較貴,如果只是一般交易的 Gas fee 就比較便宜。

可以先把 Gas Fee 理解成運費或手續費,反正這筆錢不是我收走就是了。
換算 0.0052 Matic 現在大約是 0.0039 USD,美金不到一毛錢,真的想付錢,又會碰到一大難關。正常來說是不太可能只付 1 元美金的…

怎麼刷卡買加密貨幣付 Gas fee?

有些區塊鏈會說 gas fee 極低,趨近於零,這只是話術,趨近於零就不是零嘛!
使用者的加密錢包裡就是要有對應的加密貨幣,才能成功 MINT NFT。

今年 7 月,台灣的監管機關禁止使用信用卡購買加密貨幣(信用卡收單機構不得將虛擬資產服務提供者(VASP) 簽為特約商店,信用卡收單機構跟特約商店的契約中,也要約定商店不得將虛擬資產服務提供者(VASP) 簽為受款人))。


金管會下令: 信用卡禁買加密貨幣

但現在是全球化競爭的時代,網路無國界(除了對岸和北韓),不少保護人民的法令,常常只有變成限制本土業者發展而已。
像 MetaMask 本身直接有串接一些國外線上金流服務,提供使用者刷卡買幣的功能,但是可能常常碰到卡片交易失敗,使用者要多試幾張信用卡。看起來應該可以買以太主網的 ETH,然後再用一些第三方的跨鏈橋(Bridge)之類的服務,把以太幣轉成 Polygon 鏈上的 MATIC 幣,買幣入金加密錢包這件事太複雜,我放棄解說,直接跳過。

MoonPay 跟 Wyre 我沒用過,我是用國外的幣安BINANCE交易所買 MATIC 幣,然後用 Polygon 鏈把幣傳送到加密錢包,這個是因為全球最大的幣安交易所剛好有支援 Polygon 鏈,不是隨便一間交易所都可以這樣操作的。
不過這種服務都有很多限制(規則可能會更動,以交易所或線上金流實際操作為準):
– MoonPay 的最低刷卡金額是台幣 1000 元
– 幣安交易所直接買 MATIC,最低限額是台幣 550 元
– 幣安交易所買 BNB 幣安幣的話,最低限額只要台幣 500 元,但是 BSC 的 BNB 幣要轉換成 Polygon 鏈的 MATIC 幣,操作會更複雜。
– 交易所對於要把幣提現到其他錢包,通常也有最低金額限制。

除非平常就常常玩這些 Web3 的項目,加密錢包裡就有放不少錢,不然誰沒事就為了買一個 NFT 去做這些操作?
就算發行免費 Mint 的 NFT,Gas fee 換算下來不到 1 美金,第一次入門的使用者實際付的,肯定不只一美金。

那有些 NFT 真的可以讓使用者不用半毛錢,免費讓人領,流程看似比較角單,又是怎麼做到的?

  • 第一種: 用空投(AirDrop)的
    發行者先透過一些方式蒐集使用者的錢包地址,然後把 NFT 直接發到使用者的錢包地址裡,而 Gas fee 並沒有用賢者之石變不見,而是 dApp 開發者/NFT 發行者執行空投作業的時候付掉囉。
  • 第二種: 使用外部的 Gas Station Network(GSN)
    GSN 的功能有很多,算是多包一層,Gasless transaction 只是其中之一,其他還有 upgradable contract, proxy contract 之類的功能,而 Gas fee 並沒有用賢者之石變不見,而是 dApp 開發者/NFT 發行者需要準備足夠資金,存在 GSN 的 RelayHub 中以備支付 Gas fee…
  • 第三種: 使用一些台灣本土幫人發 NFT 的服務
    Qubic, OurSong, JCard 之類的平台,這類平台對創作者提供一些 NFT 服務,也會幫使用者建立一個加密錢包,還提供了專屬的 APP 或網頁,一些憑序號領 NFT 之類的套裝功能、行銷服務之類的,減少上述讓使用者覺得很痛苦,客服也很辛苦的體驗。
  • 第四種: 建立錢包然後放錢進去給使用者花,
    使用者像傳統登入系統一樣用個資作為登入憑證,我用錢包相關的 BIP 協定幫使用者建立錢包,然後把錢或 NFT 直接空投進去,這樣什麼下載錢包、幫錢包加入網路、切換網路、付 gas fee 來 MINT之類的步驟都省下了,我還可以用程式監控這些地址,看使用者後續有沒有拿來做什麼交易。當然這招是腦洞大開,很難避免有人開分身註冊一堆帳號,最後再把每個錢包的錢通通轉到自己錢包。而且使用者本來自己有加密錢包的,會覺得幹嘛不能用自己的錢包來買?
  • 第五種: 使用一些專為 Web3 設計的國外金流服務
    例如 Paper.xyz,串接金流之後就可以用 Apple Pay、信用卡之類的買 NFT,就連賣收費的 NFT 也能用這套,但是使用者可能還會碰到有的信用卡刷不過,或是帳單多出海外交易手續費之類的。
  • 第六種: 世界上的區塊鏈這麼多
    也許有真的不用支付任何代價就能上鏈的區塊鏈可以拿來上 NFT,但是如今以太坊的生態有非常多工具可以使用,改用其他的小鏈,哪些錢包有支援? 開發生態是否完整? 就不得而知。另外國外也有團隊也在規畫其他技術,像是 Magic Eden 這種 aggregator,意圖減少不同鏈轉來轉去的麻煩之處。

買到 NFT 了,還要自己手動輸入到錢包

最後終於成功 MINT NFT,PolygonScan 上面也查得到紀錄
Polygon 鏈的交易速度感覺很快,一開始想說是不是都沒人用,不過查了一下每秒可完成交易數量(TPS),Polygon 看起來滿大的,所以很快應該是正常的。

那使用者要去哪裡看他的 JPG?

狐狸錢包的電腦瀏覽器擴充套件版本操作說明 NFT tokens in your MetaMask wallet ,直接寫

you will not be able to see them natively in the UI

電腦版的 Metamask 看不到。那改用手機 app,一樣還是看不到剛剛買的 NFT,
使用者這時候必須要照上面那篇官方說明,使用 import NFTs,輸入 NFT 的合約地址和發出的 token 編號,就可以看到 JPG 了!

或是因為 Polygon 鏈的特性,可以直接在 OpenSea 網頁的搜尋框輸入自己的錢包地址,這樣在電腦跟手機上都可以看到自己的 NFT 了。

但是我目前還是沒有打算直接開放出來給大家 Mint,除了圖片只有一兩張自己測試的、使用者體驗不夠完善,還有一些未解的問題…

痛苦的開發者體驗(DX)

對於開發者來說,聽到有人說要發 NFT,那大哉問就來了,是要從 Layer 幾開始做?


Blockchain Layers: The Layered Structure Of Blockchain

  • 是要從頭開發一套區塊鏈,還是要用哪個公有鏈? 賣 NFT 要用什麼幣?
  • 是想跟風進來吸金玩玩而已? 還是像現階段的每個鏈,創始者都有偉大的理念,像LINE Blockchain 是全球通訊軟體業者 LINE 開發的私有區塊鏈網路,建立於上圖的 Cosmos 鏈上,然後從發幣、token 應用、交易所、NFT 商店、平台…整套生態系都想做起來。
  • 用哪條鏈還要考慮流通性,像歌手阿妹的 ASMeiR NFT 是用 Tezos 鏈,在最大的 NFT 交易市場 OpenSea 就找不到,必須要到 objkt 之類的,當然也可以說買 NFT 是為了要收藏,不是為了轉手賺一筆,或是不管放在哪個 NFT 市集,想買的人都會去買,這種事沒有標準答案。
  • token 的標準是要用 ERC721A、ERC721、還是 ERC1155?
  • 發 NFT 不只是把智能合約編譯成一堆 bytecode 塞到鏈上而已,還有非常巨量的工作量要做,哪個語言的套件比較成熟?
  • 合約上鏈、使用者 mint 等各種操作的 gas fee 是誰要出?
  • Contract Metadata 跟 NFT 各處要放的圖文資訊準備好了呢?
  • 是要 lazy mint,還是預先 mint ,花了一堆 mint 費用,結果沒人來?
  • 還是先收集地址再直接空投?
  • 是要做隨機組合圖片、還是手動上圖,還是圖只有一張,所有人都領到一樣的?
  • 是要做有解盲日期的盲盒、還是要讓使用者可以挑圖? 還是隨機派一組 mint 之後馬上看得到圖? 還是 burn to reedm 之類的玩法?

研究之後發現這水很深,所有的步驟都跟以往的 Web2 網站程式不一樣,一堆名詞,Gwei、ABI、EVM, function signature 之類的,還有完全不同的身分驗證和資料儲存邏輯,雖然號稱是 dAPP (Decentralized Application, 去中心化應用程式),但每一階段各種功能還是圍繞不少中心化設計的標準規範,像錢包、區塊鏈、智能合約都各有各的標準,不是憑空想像,先做出來再想說要怎麼改,想幹嘛就幹嘛。最後還是用一些國外的平台 API,組合出自己想要的東西,沒有自己寫 solidity。

本次 NFT 網站也不是用 WordPress 套件,隨時可以搬到其他有適合執行環境的網站用,Web3 錢包授權相關操作至少挺簡單,以後也有機會整合在其他手上的網站裡。

另外還有一些神秘的 Web3 開發問題

1.Photoshop 的 NFT 資訊之謎

在 Adobe 官網個人資料設定 NFT 作者資訊,完成錢包的簽署之後,Photoshop 裡面一些鎖死的按鈕就會變成可以點。
所以資訊看起來是綁在 Adobe 帳號上面,有些公司如果沒有買 Adobe 軟體,要員工自備電腦&自備軟體的,不知道是要怎麼處理?

轉存圖片勾選 Content Credentials 之後,儲存完也就是一張圖片,沒有多出什麼檔案,用 exif viewer 也沒看出來有明顯多了什麼東西,上鏈之後合約的 tokenURI 的資料,也沒有我的名字還是 Adobe 帳號什麼的。
Adobe 官方文件說在一些有支援的 NFT 市集可以辨識那些資訊,所以像我這種不是在那些市集發售的,不知道是要怎麼查某張圖,真的是由某人的 PS 完稿的?

Once you’ve exported your image, go to one of the participating NFT marketplaces to mint the image as an NFT. These marketplaces will be able to read and display the image’s content credentials, and connect the crypto address to the wallet ID being used to mint the NFT. If they match, the marketplace will recognize it and show it to potential buyers.

NFT 教學常見的圖片組合器,除了產生那些零組件 Properties 的 metadata,不知道有沒有產生 Adobe 的這個玩意。

2.連線授權的網站圖示之謎

mint 的初始步驟有一個 dApp 跟使用者要錢包授權的,這時候錢包的 UI 上會顯示一個網站圖示,
有些錢包看起來是抓「當下那個頁面」的 favicon,所以如果頁面沒設 link rel="shortcut icon" 之類的,授權時就會顯示叉燒包。
有的錢包還會把網站圖示強制顯示成圓形(如下圖)

有些錢包是電腦瀏覽器擴充套件版本好像不會顯示 favicon,只有在手機 APP 會顯示。
然後抓的不是「當下那個頁面」的 favicon,而是抓到那個子域名首頁的 favicon。

MetaMask 的文件 Defining Your App’s Icon 有寫說是抓 link rel=”shortcut icon”,有些錢包的文件沒特別寫,會怎麼顯示就自求多福了。

3.前端徒勞無功

要在電腦上使用加密錢包,有的要裝瀏覽器擴充套件(例如 MetaMask),有的錢包不用(例如 LINE 的那個),
要在行動裝置使用加密錢包,多半是要安裝手機 APP,然後 APP 裡面有一個 webview 瀏覽器,可以直接把一些外網的 Web3 dApp 網站網址貼上去然後 mint NFT,這時候要小心程式寫得很酷炫的 NFT 活動網站,在那個瀏覽器裡面有 JS 無法正常執行或顯示不正常的問題。
上面文章寫說透過 web3.js 一些自動提示切換網路之類的,可以增進使用者體驗,結果在加密錢包的手機 APP 或瀏覽器常常武功全廢,網頁前端果然都是在做一些徒勞無功的事啊。

4.測試幣越來越難拿

區塊鏈程式調整時經常需要付 gas fee,如果寫壞了甚至要發布新的合約,通常會先切換到 testnet 做測試,然後到一些 testnet faucet 的網站去領測試幣。
以太坊 2.0 合併後,有些領測試幣的網站都做了更多安全機制,領幣變得更麻煩,像 Paradigm 要授權登入推特帳號,帳號還要 least 1 Tweet, 15 followers, and be older than 1 month,有時候 NFT 是設定一個錢包只能拿一次,要測試別的錢包能不能拿,不同錢包地址用同一個推特帳號也是不行的。
或是像 MUMBAI FAUCET 要先註冊平台的帳號。
其他錢包要測試功能,但錢包又沒錢的時候,目前想到最快的方法是用其他有錢的錢包打錢過去。

5.我的 NFT 少了什麼?

在 MetaMask 裡面,比較自己發的 NFT,跟外面拿到的 NFT,UI 似乎長得不太一樣:

右邊的是 ConsenSys 的 The Merge ,是一個以太主網的 NFT,不只是 JPG,還是個影片,一樣是採用在他的自家網站免費 mint,然後 gas fee 要使用者自己付的。本文章講老半天的 MetaMask 就是 ConsenSys 的產品之一。

這樣感覺很不酷,不像自己真的有拿到 NFT,也有嘗試過拿我不曾 mint 過的 NFT 合約地址來放,是無法加到錢包的,證明錢包真的有檢查。

後來詢問 MetaMask 的客服,客服說 MetaMask 沒有完整支援 ERC-1155 的功能 Does MetaMask support ERC-1155?,還在開發中,所以不會有 Send 的按鈕。後來我改用 ERC-721 跟 ERC-721A 另外發一套 NFT,就有 Send 按鈕了,

至於 Share 按鈕跟作者資訊,在 YouTube 上面找其他人秀 NFT 的片段,也是跟我的畫面差不多,沒有 Share 按鈕和作者名稱的圖示+按鈕連結。
到 API 系統商的 Discord 上面找客服,系統商只管發 NFT 的流程,不管錢包怎麼顯示,錢包百百種,要我去問 MetaMask 錢包客服,或是把 NFT 在改用其他的鏈看看,不過改用以太的其他 testnet 還是沒顯示。
找錢包的客服,MetaMask 錢包客服只說那個是 NFT 建立的時候設定的,叫我問系統商客服,說跟 ERC-XX 的 token 標準和 NFT 在哪個鏈上沒關係,但從我的合約地址也無法明確看出缺少了什麼。
沒有明確的解答,變成互踢皮球的感覺。


自己比對 token 或是合約地址的資訊,看起來也沒有特別多出什麼。

6.一些方便的 NFT 服務真的有去中心化嗎?

上述介紹一些 Qubic 之類的 Web3 錢包和 NFT 服務,把買幣、交易、查看 NFT 之類的主要功能通通濃縮在一起,看似簡化一些原本應該有的流程,但還要填個資,什麼保密匿名性都沒了! 自己實際稍微摸過 NFT 跟 Web3 的邏輯之後,覺得後續可能也有一些怪問題,但我想現在市面上用這種平台辦 NFT 活動的行銷人員應該不會在意那些細節。

像 Qubic 裡面支援有以太主網、Polygon、幣安的 BSC 和對應的 testnet,註冊之後可以看到錢包有一個 0x 開頭的位址,我試過把自己的 NFT 空投到那個 Qubic 錢包的地址,真的成功就可以在 Qubic 看到自己 NFT,但是 Qubic 的官方說明 說無法導出私鑰,所以假如某一天廠商倒掉,是要自己把合約地址跟 token 編號留起來,自己找對應的 Blockchain Explorer 查囉?

因為錢包有地址,APP 裡面還可以直接刷卡、留個資買東西,那打錢給這個錢包地址的外部地址,會不會被平台端經過某種方式統整分析? 舉例來說,假如今天加密貨幣市場有個消息,某錢包地址不明原因收到了多筆天價的加密貨幣,沒有人知道這地址是誰的,但這神秘地址剛好與平台的地址有多筆交易紀錄,平台端可以透過行為模式推測這是某人的錢包,工作人員還可以查看使用者之前在平台買 NFT 時留的個資,知道這個神秘地址原來是某某某。

其他的平台,像 OurSong 至少還有寫OurSong 支援哪些區塊鏈?我該如何選擇?。有的平台則是相當神秘,頂多只有單頁放一個 Polygon 的小 logo,個人資料裡好像也沒看到錢包地址,站內的 NFT 要轉到其他外部錢包,還要另外提出申請? 不知道是不是假去中心化,要轉出 token 才會真的把資料寫到鏈上之類的,這樣公司如果倒了,大家的 NFT 就不見了捏?

但是後來找操作影片,購買完成後還是會有區塊鏈地址和 tokenID 編號。所以應該是真的有上鏈,但是沒實際買過,無法拿地址去查詢鏈上數據。

7.網站又要增加當初沒意料到的功能

本來以為買到 NFT,就會自動出現在加密錢包的手機 APP 裡面,結果有的錢包的電腦版壓根就不會顯示 NFT 的圖片;另外某些鏈的 NFT 還要自己 key 進去才能在手機 APP 上瀏覽。
所以我的網站不只是要顯示幾月幾號有買過 NFT 或沒買過 NFT 而已,還要顯示使用者的錢包領到幾號的 NFT、這個 NFT 的合約地址是什麼,如此一來使用者才能自己在 MetaMask 輸入資訊,看到他自己買的 NFT 圖片長啥樣子,不然購買之後什麼都看不到,還以為是被詐騙。

另外在這個功能的邏輯之下,我完全可以順便把使用者地址記錄起來,然後檢查使用者還有買過其他什麼 NFT。

但在加密錢包這套匿名性與去中心化的機制下,領 NFT 還要填一堆實名個資其實有點奇怪,不過現有的加密錢包似乎多半沒有訊息功能,例如我可以從鏈上數據知道有哪些地址 mint 我的 NFT,但是我想整批一次通知他們回來領其他東西,似乎是有困難的,註冊時不需要填手機貨 email,app 的推播通知只有拿來顯示交易結果,這似乎是一個有待解決的事情。不過這個功能似乎在 OurSong 不是問題,OurSong app 裡面有一個類似 Discord 的社區聊天功能,有一次在 OurSong 領了一個免費 NFT 之後,就開始接收到一些奇怪的群組邀請,似乎是可以根據領了某個 NFT 的當條件,直接邀人進行其他社交活動。

8.山寨 NFT

從錢包 APP 的 UI 可以看到,主要顯示的都是那些圖文訊息,而最重要的合約地址被在最尾端,而且只看得到頭尾幾個字元,一般人看到有別人的錢包裡有 BAYC 之類知名 NFT 的圖片,會去核對合約地址是不是真的嗎? 還是就直接以為那是真的 BAYC?
如果第 4 點顯示資訊的問題能解決,任何像我一樣的人,都可以自己做一個假的 NFT,自己 mint,在 MetaMask 裡面放一堆很貴的 NFT 然後出去裝 B,在大型 NFT 平台上架的會被管制 OpenSea 推出多項新措施打擊假 NFT,但我不是透過市集平台上架的,資料上鏈要怎麼上就怎麼上,沒人攔得住。

英文小教室

在國外原廠的 Discord 問問題時,想說為什麼大家都用 an NFT,而不是 a NFT,查了一下Is It an NFT or a NFT? 才知道 NFT 也算是元音家族的,就像 an hour, an honest child 一樣,要用 an NFT 才對。
另外 NFT 的全文是 Non-Fungible Token,所以看到有人寫「購買 NFT Token 」之類的文句其實是有問題的,大概就跟曲奇餅乾、牛奶拿鐵咖啡的語言癌問題一樣。

NFT 會員卡賦能

這一句話這其實是三件事,
首先一個系統或經營方式有會員機制,
會員透過加密錢包來領 NFT,或是在領 NFT 的步驟中註冊成會員,
再有一套認證機制來檢查誰有 NFT,然後提供特別的服務。

線上會員卡不用區塊鏈也可以做,但改用區塊鏈去中心化的邏輯來思考有什麼不同?
使用者更匿名,加密錢包很容易建立,不需要受一些社群平台要滿幾歲才能註冊、註冊時要手機號碼…的東西管制,感覺一些色情或灰色產業可以有很大的發揮空間。
實際開發後發現,用加密錢包地址來認證,比目前常用的 Web2.0 平台 LINE/FB/Google 那些更簡單,也更加地跨平台、去中心化,開發者與店家不用提交審查、不用設定隱私權政策網址,不用做一大堆麻煩的 URL 設定或站台設定,地雷點大概就是有的電腦版加密錢包要裝瀏覽器擴充套件,手雞要裝 APP,而且跨應用程式容易在使用中發生各種莫名奇妙的問題,或是一人註冊多組錢包的問題。

對於使用者需要登記各種實名制資料的場景,特別用這種機制的就比較沒意義,使用者可能還覺得平台要了地址,是不是又要偷看地址的交易紀錄和 NFT 紀錄?
可能真的有某些使用場景適合吧? 不然比較多像為了 NFT 而 NFT。

我可以說當網站主機掛掉時,客服人員還是可以經由客人的加密錢包地址、NFT 合約的地址,從 blockchain explorer 查到客人是不是真的有買過 NFT,以此作為憑證,能享受相關加值服務。
但是網站掛掉,確定還能為消費者提供服務? 把東西全部存在公有鏈上面是很貴的,區塊鏈的寫入也不一定像網站主機這麼快,部分區塊鏈應用多半也只是存個簡單的交易序號或 IPFS 連結而已。
或是會不會像上班族40萬買「嘟嘟房NFT永恆王」!想終身免費停車卻遇撤站傻眼,公司還沒倒,賦能就已經沒了?

還有一種用途,我也可以說當原來提供服務的公司倒了,或藝術家不幹了,當網站主機和域名不續約時,使用者還是可以從鏈上數據查到自己收藏的創作品、遊戲的虛寶和角色。不會像以前小時候玩的一些 Pet Society 之類的,遊戲收掉了,東西就都不見了。

結論

Web3 也許能真正帶來一些價值,但市面上有些項目的理念我是不太認同的

去中心化?
然後出現詐騙、盜版或各種問題的時候,又要有個中心監管機關出來主持秩序?

導入區塊鏈讓資料不易竄改?
這我就更聽不懂,意思是說還沒用區塊鏈之前,那個線上服務的伺服器資料很容易被竄改、遺失、不值得信任? 這是資安問題吧?

保存在鏈上的資料是正確的,可以解決信任問題?
區塊鏈有沒有解決信任問題,還真不好說。但是要記得 Garbage in, garbage out.

每一個區塊互相驗證的機制,不須第三方驗證?
現在使用者看到一些 Web3 項目,還要看底下有沒有掛一堆安全標章、履約憑證、信託證明…之類的第三方驗證,最好還要一些名人或機構掛保證,才敢繼續用,不然以為又是什麼資金盤吸金詐騙的「創意作品」。
雖然這是有人拿技術做不好的用途,不是技術本身的問題。

擁有保密性匿名性?
看到有人在自介放個 ETH 抖內 address,其他人就可以用各種 blockchain explorer, xxx scan 輕鬆查到地址歷年收款與支出紀錄。或是號稱有人 Web3 多年經驗豐富,錢包地址比經歷上寫一堆有的沒的還能更快驗證,唯一要擔心的是拿別人的地址。
像我一樣錢包 address 紀錄沒什麼東西的,似乎沒資格討論這個。

不要聽市面上的區塊鏈媒體或 YouTuber 講得天花亂墜,大部分都是給玩幣的人看的,
不然就是幣圈、鏈圈有什麼議題就跟風蹭流量,
不然就是辦 Web3 活動的人寫公關稿大吹特吹,
不然就是一些 Web3 項目的投資方在製造利好消息,
真正想稍微了解技術,還是要看一些有程式碼的開發文章並真正實作,才能真正了解那些邏輯。

延伸閱讀