作者:Jaleel、Jack,區塊律動
隨著NFT 市場步入熊市,即使是市場的領頭羊「無聊猿」也未能逃脫,與之形成鮮明對比的Azuki 卻表現不凡。過去三個月裡Azuki 與市場趨勢背道而馳,成功躍升為最強勁的藍籌項目。牛市高峰地板價在30 多ETH 的Azuki,甚至在前幾天還漲到了17ETH。不僅如此,Azuki 社區的社區氛圍也是少有的,在熊市也極具活躍度和凝聚力。
直到今夜凌晨的Elements 發售,卻讓社區破了大防。除了對白名單Mint 窗口期只有短短十分鐘,導致短時間內網站流量超載而直接崩潰。發售結束後,項目方將2 萬枚ETH 直接轉走。社區討論最多的就是Elements 與Azuki 一代的各種特徵重複度高,這對Azuki 一代的價值可能造成直接的稀釋。
一開始社區質疑的是Elements 與Azuki 的高度重合性,然而隨著開圖的Elements 越來越多,竟有不少持有者發現自己的Elements 與其他持有者的長得一樣,不是高度重合性,而是完全一模一樣。
截止到目前,Elements 已經被發現了5 套完全相同的圖片。這五套的編號分別是:#2210 與#10744;#1077 與#8600;#16046 與# 8914;#16580 與#5613;#19697 與#2475。不僅Elements 的NFT 顯示的前端圖片一模一樣,甚至將圖片保存下來後的圖片命名也都一樣。
隨著Elementals 開圖時被發現撞圖情況越來越多,團隊才意識到這個問題並做出回應。 Azuki 聯合創始人2PMFLOW 在社交媒體上回復社區表示,該情況系技術故障,由於數據提供商的事件日誌因以太坊區塊重組而過時,導致少數Token 的元數據被錯誤處理。團隊正在努力恢復正確的圖像和元數據。
「區塊重組」發生在區塊鏈同時產生區塊時,如果存在錯誤或由於惡意攻擊將會導致臨時重複的區塊鏈。因為添加到下一個區塊的礦工必須決定分叉的哪一邊是正確的鍊或規範鏈,因此會發生「區塊重組」的情況。一旦礦工選擇了分叉或規範鏈,另一條鏈就會丟失。
回顧上一次重大的「區塊重組」情況是在2023 年5 月25 日,以太坊Beacon 鏈經歷了一次七個區塊的重組,暴露出了被稱為鏈重組的高級安全風險。 Eth2(現在的共識層升級)Beacon 鏈上的驗證者在某個客戶端更新提升了特定客戶端后變得不同步。
「撞圖」其實並不罕見
對於Azuki 聯合創始人2PMFLOW 給出的「撞圖情況因以太坊區塊重組,系技術故障」的回复,cryptochasersco 創始人scriptmoney.lens(@scriptdotmoney) 無法苟同,他在社交媒體上提出了自己的看法:發生撞圖情況的原因是服務端監聽event 沒有處理好異常,不是數據提供者。言外之意,Azuki 所說的撞圖情況系技術故障似乎無法自洽。
在探討NFT 圖片生成的技術原理時,我們需要關注的三個核心要素是:圖層樣式、生成算法,以及生成的NFT 圖片的上傳形式。由於這三個因素的變異性,可以產生無數種形式的NFT。
首先,圖層可以被視為預先製作好的素材,比如:10 種顏色不同的背景、10 種不同的髮型、10 種不同的帽子、10 種不同的手持部件等等,它們都是各自的獨立圖層。一旦確定了圖層的數量和样式,我們便可以預設稀有度指數、目標生成的圖片數量等多種影響因素,從而創建出一套可以生成各種組合的NFT 算法。然後,根據生成算法將各個素材圖層從底部疊加至頂部,組成一個完整的NFT。
而根據項目方事先準備的圖層數量和算法複雜程度,生成的NFT 出現撞圖的概率也不盡相同。比如,當一個NFT 項目方只准備了3 個圖層,每個圖層僅有10 多種元素,且生成算法也相對單一,那麼該NFT 系列出現撞圖的概率便會非常大。但像Azuki 這樣有多圖層和上百個元素,且生成算法極為複雜的藍籌項目,即使再生成幾萬個新的NFT,也很難出現撞圖的情況。
當然,因為圖片生成的過程是在鏈下完成,因此即使出現了撞圖現象,也可以在圖片正式上鍊前對其進行二次篩查,將重複的圖片過濾掉。這就需要項目方在上鍊前對生成的NFT 圖片進行充分的篩選過程,即便是項目方對原始素材直接套用生成的情況,也應有合理的篩選過程,以確保程序運行的性能,以及所有組合都嚴格遵循預設的概率分佈。
那麼綜上所述,Elementals 的問題出在哪裡了呢?
首先最明顯的,Elements 很可能直接套用了Azuki 或者BeanZ 的圖層及元素甚至是生成算法。但或許是由於該系列NFT 的主體圍繞水、火、電等有限的「元素概念」,相關的生成算法沒有調試到位,導致NFT 出現重複生成的情況。
其次,社區關於「相同圖片在同一區塊中Mint」的說法似乎也不完全成立。據一位NFT 技術人員透露,Elementals 系列中出現撞圖的NFT 並沒有前後或者相近的序號排列,表明它們在同一區塊中被鑄造的概率較小。因此還有一種解釋,就是Azuki 團隊並沒有對生成後的Elementals 進行二次篩選,導致重複的圖片被直接傳至鏈上。
當然,不管是什麼原因,像Azuki 這樣的藍籌NFT 項目方出現撞圖事件都是不可接受的。很明顯,團隊在發售Elementals 之前並沒有做足充分的準備。
在眼皮底下換圖,鏈上的圖片為什麼還可以修改?
針對Elementals 鑄造和開圖的問題,Azuki 聯合創始人2PMFLOW 針對Elementals 開圖出現相同圖像在社交媒體上回復社區表示團隊正在努力恢復正確的圖像和元數據。而隨後BlockBeats 也發現,在查詢Elementals 系列合約時,部分NFT 的tokenURL 已無法顯示查詢結果。同時,Elementals 系列部分NFT 預覽圖在Blur 等NFT 交易平台也無法正常顯示。 Azuki 團隊就這樣在社區的眼前來了一次實時「換圖直播」。
已經上傳至鏈上並鑄造出來的NFT,為什麼還可以更換和修改呢?這就需要對NFT 圖像的存儲方式進行簡單的回顧。
我們知道,今天的互聯網是建立在HTTP 協議上的,HTTP 協議是用於從網絡服務器傳輸超文本到本地瀏覽器的傳送協議。當我們通過HTTP 獲取網頁或文件時,我們從服務器請求並獲取信息。這是一個中心化的過程,存在多個問題,比如如果服務器出現故障,那麼文件將無法訪問;同時,如果大量用戶試圖同時訪問某一文件,將會對服務器帶寬造成極大壓力。
相比之下,IPFS 採用了一種更分佈式的方式。 IPFS 是一個旨在創建持久和分佈式存儲和共享文件的協議和網絡,是一種新的超媒體傳輸協議,地址了大量數據存儲和帶寬問題。 IPFS 將文件和其他數據作為塊存儲在多個節點上,並使用唯一的哈希值來標識每個塊。當用戶請求某一文件時,IPFS 將從最近的節點獲取塊,而不是從原始服務器獲取。這使得數據的訪問更加快速且更加穩定,不會因為單一服務器的故障而導致數據無法訪問。
正因為這些優勢,IPFS 成為瞭如今存儲NFT 元數據的理想選擇和最大共識。 NFT 包含的信息通常包括一些關於藝術作品的描述,如其作者、創建日期等,這些信息被稱為元數據。由於NFT 的不可更改性,元數據需要被永久存儲,而IPFS 的分佈式特性恰好能夠提供這樣的服務。同時,IPFS 的分佈式特性還可以防止NFT 的元數據被篡改,確保了NFT 的安全性。
在IPFS 的文件系統中,每個文件將會根據內容生成一個哈希值,在IPFS 中的文件將根據這個哈希值來進行索引。並且提前檢驗這個哈希值是否已經被存儲過。如果被存儲過,直接從其它節點讀取它,不需要重複存儲,一定意義上節約了空間。這極大地提升了資源存儲的效率,也降低了交易費用。
而在查詢Elementals 系列的合約後我們發現,Elementals 的圖片元數據並沒有上傳至IPFS,而是選擇存在Azuki 自己的中心化服務器中。因此,元數據的所有權和修改權限都握在Azuki 團隊手中,可以隨時進行更改。
實際上,並不是只有Elementals 一個項目選擇將圖片存在自己的服務器裡,許多「有錢的」藍籌NFT 都會這麼做,以獲得對項目更大的把控能力。但與Elementals 相比,此前的Azuki 系列的元數據就是存儲在IPFS 上的。那團隊為什麼要在項目的去中心化進程上「開倒車」呢?或許一開始大家就意識到,Elementals 可能會出問題。
而還要再離譜一些的是,團隊在元數據修改的過程中,還犯了新的錯誤。 scriptmoney.lens 還發現,Azuki 團隊上傳的修復metadata 似乎是file 文件,因此一訪問就跳到下載界面。也就是說,服務器並沒有上傳正常的json 元代碼,而是直接上傳了圖片文件。因此當Blur 這樣的第三方交易平台在服務器上尋找NFT 圖像數據時無法正常讀取,也就出現了本段開頭呈現出的問題。
而當我們查看元數據指向的下載文件時,會發現這些新的圖片甚至不能用「修復」這個詞來形容。以Elementals #16580 為例,截至撰稿時,該NFT 的元數據文件與原版相比,可以說沒有一處是相同的(見下圖)。儘管團隊此前預告過自己的換圖動作,但如此大的差異,或許對許多人來說多少都有些難以接受。
不管從哪個角度評價,Elementals 的發售都是一起災難性事件。它打擊的不光是Azuki 社區本身,也是整個頭像NFT 領域。從經驗來看,人們對於NFT 項目方的信心和信任往往是十分脆弱的,而Azuki 的吸血鬼行為正在迅速消耗著這個行業僅存的信仰。
當然,面對社區的質疑和批評,Azuki 團隊也正面做出了回應,表示會努力彌補過錯,並在今日下午宣布了新的「綠豆」空投。儘管Elementals 的場面十分混亂,但或許我們可以再留出一些信仰,給Azuki 團隊最後一次機會?