NFT 建立在智能合約之上,就有存在漏洞的可能。

原文標題:《NFT 是否安全?》
撰文:Chris Hamer
翻譯:ChainDeFi

隨着日本開放 NFT 業務平臺,韓國三大娛樂公司之一的 JYP 公司將目光轉向 NFT 市場,NFT 越來越受普通人的關注。

試想日本動漫,韓流湧入到 NFT 市場,其爆發力和潛力該有多大?

但是 NFT 和任何其他 DeFi 一樣,都是由易受攻擊的智能合約組成,因此 NFT 的安全現在也備受關注。本片從以往的 NFT 出現的一些事故來闡述 NFT 智能合約的故事。

NFT 一個不太突出的方面是,它們是建立在智能合約之上的,而智能合約可以被利用、被破壞和被黑客攻擊。與任何具有不完美智能合約的典型 DeFi 項目類似,NFT 智能合約也可能存在導致不利結果的漏洞。隨着我們討論歷史和一些導致資金損失的不幸事故,我們將回顧人們在過去幾年裏利用 NFT 合約所做的事情。

CryptoPunks

CryptoPunks 可以說是迄今爲止最受歡迎的 NFT 項目,在 2017 年推出後,其智能合約中出現了一個有影響的漏洞。當所有 1 萬名 Punks 被賣出並進入二級市場後,發現了一個可能發生銷售但未收到實際付款的錯誤。

NFT 安全嗎?回顧 CryptoPunks、Meebits 歷史上的合約漏洞

代碼中的問題歸結爲一行——它沒有經過足夠的測試。@0xfoobar 後來在 Twitter 上發佈了一個帖子,詳細解釋了這個 bug。

CryptoPunks 的創建者 LarvaLabs 最終以一份新的、更新的合約重新啓動了該項目。V1 朋克是最初合約的一部分,直到 CryptoPunks V1 的 ERC-721 封裝被髮布,這也被稱爲「經典朋克」。

Meebits

在推出 CryptoPunks 多年後,LarvaLabs 又推出了一個名爲 Meebits 的後續項目。所有 Meebits 都帶有隨機特徵。然而,在其啓動時,一些用戶想出瞭如何欺騙系統和重新滾動特徵,以獲得他們想要的特徵。

如何 ?Meebits 項目在智能合約中包含一個存檔文件,顯示每個 Meebit 代幣 ID 的特徵。用戶可以啓動 Meebit 的鑄造,如果他們通過比較特徵文件發現代幣並不罕見,就可以取消它。一位用戶充分利用了這一點,並在 Twitter 和 Discord 上公開記錄了他的成功。這個用戶是「0xNietzsche」。

0xNietzsche 發起了 300 多筆交易來測試這一漏洞。如果沒有足夠稀有的特徵,他們發起鑄造的每個 Meebit 都會被取消。經過 300 多次交易,他們終於能夠偶然發現一個罕見的 Meebit。#16647。

NFT 安全嗎?回顧 CryptoPunks、Meebits 歷史上的合約漏洞

「0xNietzsche」聲稱,他們每小時花了 2 萬美元的 gas 費,等着鑄造他們稀有的 Meebit,但他們仍然利用合約這樣做。他們能夠以 200 ETH 的價格出售新制作的 Meebit,當時價值約 75 萬美元。

LarvaLabs 很快就聽到風聲,暫時停止了 Meebit 的鑄造,併發布聲明:「我們已經暫停了 Meebit 合約中的社區鑄造和交易。合約是安全的,所有 Meebits 都是安全的,交易也很順利。」他們是正確的,Meebits 仍然是完全隨機分配的——除非你投入大量的時間和 gas 費用,否則就不能利用合約,而那時,鑄造幾乎已經完成了。

儘管如此,Meebits 是一個很好的例子,說明了如何利用智能合約,讓一個或多個用戶在創建 NFT 時獲得競爭優勢。

NFT 安全嗎?回顧 CryptoPunks、Meebits 歷史上的合約漏洞

MoonCatRescue

NFT 安全嗎?回顧 CryptoPunks、Meebits 歷史上的合約漏洞

MoonCatRescue 於 2017 年推出,一開始他們的合約就有一個相當大的缺陷。

MoonCats 官方常見問題解答頁面提出了一個問題:您是否爲此獲得報酬?

回覆 :

「不。我們打算從創世貓的銷售中收集以太坊。然而,我們在 QA 過程中所做的修正卻導致這些資金被永久封存。但這沒關係。」

當 MoonCat 被收養時,transferCat(catId, catOwners[catId], msg.sender, offer.price),資金被髮送到 require(catOwners[catId] != 0x0。在測試中仔細檢查它的話,其實是可以解決這個問題的。雖然這不是智能合約的主要缺陷,但在他們意識到這個錯誤之前,他們仍然失去了相當數量的 ETH。

NFT 安全嗎?回顧 CryptoPunks、Meebits 歷史上的合約漏洞

智能合約的整體漏洞

2018 年 3 月,五位計算機科學家合作撰寫了一篇題爲《大規模發現貪婪、揮霍和自殺的合約》的論文,他們對此進行了研究 :

  • 貪婪合約,無限期鎖定資金

  • 揮霍合約,將資金隨意地泄露給任意用戶

  • 自殺合約,可以被任何人殺死

他們在以太坊網絡上籤訂了近 100 萬個 (970,898) 智能合約。他們發現,其中 34200 個智能合約容易受到黑客 / 利用,這意味着在 2018 年,大約每 20 個智能合約中就有 1 個面臨風險。他們深入分析了 3759 份合約,以具體驗證它們的代碼中存在漏洞,發現 3686 份合約中的漏洞都在平均 10 秒內被發現。這太瘋狂了!他們最多可以從合約中提出 4905 以太幣——略高於 860 萬美元。該報告還補充說,「此外,區塊鏈目前有 6239 以太坊 (約 560 萬美元) 被鎖定在死後的合約中,其中 313 以太坊在「死」後被送到了死合約中。」有很多加密貨幣卡在失效的合約裏。在進行這項研究時,DeFi 和其他智能合約佔鏈上活動的比例要低得多。Glassnode 於 2021 年 5 月 6 日發佈的一份最新報告發現,22.8% 的流通 ETH 被鎖定在智能合約中。

NFT 安全嗎?回顧 CryptoPunks、Meebits 歷史上的合約漏洞

現在仍然是每 20 個智能合約中就有 1 個容易受到攻擊的情況嗎?項目是否變得更安全了 ? 或者,隨着智能合約對缺乏知識的人來說變得更容易發佈,情況可能變得更糟了?即使我們保持 1 / 20 的比率,這將意味着大約 1% 的 ETH 供應處於脆弱的智能合約中。

這裏的要點是,在開始一個項目之前要做調查。儘量不要 FOMO。確保你想要投資的項目花時間開發智能合約,確保這個項目不是憑空產生的。許多複製粘貼的代碼存在於那裏,這總是一個危險信號。

來源鏈接:blog.mycrypto.com