如何避免 YOLO-Cat-Club NFT專案合約偷跑問題?

陳零九 Nine Chen 推出的 YOLO-Cat-Club NFT 專案

區塊鏈創造出 NFT ,多數價值創造來自於錢包擁有者持有該 NFT 可共享項目方提供的資源,這一切紀錄在開發者創造的智能合約。

過去從 Fomo3D 開始,展示出智能合約即代表條約 (Code is Law.)。2021年的 Adidas 鑄造時超長等候,近期 YOLO Cat 提前於官方公告時間完成銷售,近日 EchoX 白名單期間科學家即把 NFT 鑄造完並超過項目方原訂數量,上架到 OpenSea 銷售之NFT遭項目方要求主動退回,造成粉絲損失,了解智能合約顯得更加重要,小型專案百萬起跳,大型專案 100 個 NFT 市值動輒超過 1 億,我們將從智能合約基礎說明,再談該如何避免 YOLO Cat 事件重演。

此次陳零九 YOLO Cat 事件,我們先回顧整個事件,再進行合約分析。

  1. 還原 YOLO Cat 事件
  2. 從合約基礎開始,分析 YOLO Cat
  3. 反思:公開透明是否代表「公平」

1、還原 YOLO Cat 事件

2022.1.9 當天藝人陳零九本來預計將在下午 13:30 公開發售的,「 YOLO Cat Club」的系列 NFT,卻在 13:29 分時全數鑄造完,社群開始鼓譟。

對此陳零九及其技術合作方團隊 FOMO Dog Club 有在當天晚上的8點鐘,一同在 IG 直播說明整個事件的始末與補償方案。

https://www.instagram.com/tv/CYgnUQVBV2c/?utm_source=ig_web_copy_link

首先,關於為什麼在發售時間前就可以進行買賣,項目工程師的說明:

之所以會在開賣時間前就鑄造完畢,是因為他原本就是準備在接近拍賣時間(13:30)時釋出合約,但剛好這次以太坊出塊時間較快,所以才會導致在開買時間(13:30)前,就於官網釋出合約連結。
至於退還 gas fee 的補償措施,項目方將全數退還「4,394 筆」沒有鑄造成功的交易,一共 70,060 美元的 gas fee,此外還將抽出三位用戶,免費空投 YOLO Cat 作為補償。

此事件發酵後區塊鏈科學家社群 AlphaShark 的創辦人也有在,Medium 上發文解釋這次事件的原因

 https://medium.com/@b1995/yolo-cat-復盤-1-956565334642

我們可能沒有去搶,又或者沒有搶到熱門的NFT,但不管我們的選擇是什麼,我們可以從中學習到什麼呢?

2. 從合約基礎開始,分析 YOLO Cat

智能合約即條文,我們透過合約內容來進行解釋:

下面我們會分享如何找到NFT的合約,包含合約上架時間,觀看鑄造的機制。
有關機器人搶 NFT 的原理則不深入探討,簡單來說主要機器人所做的事情分為兩個,分別是暴力查詢提前找到合約以及產生多個智能合約代替人頭,突破每人鑄造數量的限制。

  • 如何找到合約
  • 如何知道合約上架時間
  • 從合約中第一個 NFT 察覺線索
  • 事件爆發的關鍵重點

如何找到合約?

首先我們要先到 opensea 上找到 Yolo Cat 的項目
https://opensea.io/collection/yolo-cat-club09

  1. 點擊其中一個 NFT
  2. 找到左側 Detail,其中有一個 Contract Address,點擊他
  3. 會看到在 Etherscan 上的 Contract

如何知道合約上架時間?

到 Contract Creator: 中 txn 的網址,會有此筆交易的詳細內容
可以看到 timestamp 是 `Jan-09-2022 04:37:34 AM +UTC)“

從這邊可以得知這個合約是在公開發售約一個小時前上架的,
而的確會有人可以事先取得合約地址進行偷跑的動作,
不過這份合約當中其實有做一個狀態判斷,而從公開發售時間點的 block 13969455中,我們可以清楚地看到。

在 Etherscan 上 搜尋 13969455,可以看到這個 block 的詳細資訊,可以找到這筆交易 filp Sale Active。

點擊 129 transcations https://etherscan.io/txs?block=13969455&ps=100&p=1
從這裡我們可以發現,這個動作的意思才是真正開賣,只要在這個動作前的鑄造行為都會失敗,可以從合約的 transactions 觀察。

直接看倒數第二頁的交易記錄,可以看到在 filp Sale Active 前都是 fail (失敗)的


從這些數據來看如果想只是單純地偷跑,在 13:58 前其實是會失敗的。

從合約中第一個 NFT 判斷線索

  1. 第一隻鑄造出來的 NFT 的 ID
  2. 智能合約當中的鑄造方法是否有特殊寫法

1. 我們可以看 filp Sale Active 完的第一筆交易,他的 id 是 10,而下一筆是 11,從這個規律推斷他前面還有九隻,剛好跟白名單的數量相符。


事件的關鍵重點

從合約中我們可以以找到鑄造方法,詳細去合約看發現在 auctionMintYoloCat 確實是有寫到時間的判斷

把這兩段做比對,可以看到 auctionMintYoloCat 有判斷執行的時間一定要超過 auctionStartTime,否則就會拒絕執行

這個鑄造方法,的確有判斷狀態,如果有人偷跑是會挖失敗。

但是在類似的方法 mintYoloCats 卻少了這個判斷,因此造成出塊時間不一致的問題,也是整起事件需要去檢視的地方。
為什麼在這部分少了這一個 require (),這地方才是應該討論的部分,而非 gas fee 的問題。
並再次彰顯上線前的測試還有程式碼 review 在開發流程中扮演重要角色。

缺少的以下這段程式碼,造成整起事件相對不公平。
require(block.timestamp >= auctionStartTime, 'Auction not start');

3. 反思:公開透明是否就代表公平?

整起 YOLO Cat 事件,讓我們反思區塊鏈強調公開透明是否代表公平,區塊鏈技術是否反而對一般人創造更高門檻,變相需要去跟科學家競爭,使得原本單純喜歡與開心想要支持項目的人因為不懂程式,加上搶不到只能到 opensea 去購買,取得門檻與購買的成本越來越高了,我相信這絕非項目方本意。

這就像是知名歌手的演唱會門票,假設今天公告在 12:00 開賣,但是 11:59 就搶購一空,有人先用程式搶完了,那麼不會程式,但是想聽演唱會的人只能透過黃牛去買,同樣的問題發生在 NFT 上,項目方一定不樂見這樣的情形出現。

長遠的好項目,需同時具備社群與技術能力

項目的未來取決於項目方執行力以及社群的信任,會支持項目方的社群肯定是喜愛項目方以及他們的發展計畫,而參與社群的人也是項目方潛力的大使人選,因為他們真的喜歡,會不斷的協助項目發展,每每有新消息發布總是第一時間願意分享,這對項目方式極為重要的,如果少了這群「志同道合」的人,項目難以推動,購買 NFT 的人如果都是想炒作或是 paper hand,長期來看,對項目方都不利,因此如何能公平的在公售期間發售,讓真正喜愛項目的人去購買到,而非是有心人士操作炒作一波,這在在都考驗著技術能力,而社群與技術的結合才能讓社群更加信任。

而對於想要接觸或加入 NFT 世界的人,如果能夠多學習一點,就是一種保護自己的方式。

增加領域內的知識,提升判斷能力,降低成為新的韭菜的機率。
幣圈爆炸的資訊往往帶有風向,更重要的是在事件中獨立思考,找到線索而非道聽塗說。

不隨之起舞,不一頭熱,幣圈永遠不缺下一個賺錢的機會
我們能做的,就是在時間點到來時,準備好自己。