分析 | Loot分叉的集體漏洞——稀缺性有規律可循

來源:Medium

作者:iamthetorn

翻譯:思嘉

如果沒有修改智能合約中使用隨機性的方式,不要將Loot的代碼用於新項目。

Loot的智能合約有一個設計限制(或者說是一個安全漏洞),影響着初始代幣分配的公平性。而那些使用Loot代碼的新項目也存在這個漏洞。

本文不是要貶低Loot或任何相關公司,而是意在:

1.通過減少信息不對稱,營造NFT的公平競爭環境;

2.減少程序錯誤或設計模式的繼續擴散,以防將用戶置於風險中。

Loot是一個由8000個代幣組成的NFT集合,稱為Bags。97%的NFT可由公眾鑄造,除了Gas費之外沒有其他費用。

智能合約包含隨機化和渲染層、邏輯層,允許它生成對應於任何代幣ID的SVG。

每個Bag有8項屬性,每一項都在智能合約上隨機生成一個分值。分值越高,物品的名稱可變性越強,物品也就更加稀有。

那麼問題出在哪裡呢?

Bag的內容是根據其代幣ID確定的——這意味着在最初的代幣分配之前或分配期間的任何節點,只要通過閱讀智能合約,任何人都可以輕而易舉地提前計算出整個Bag的供應量(包括稀有度量)。

由於claim()函數將代幣ID作為一個參數,所以很容易從收藏品中挑選出最稀有的物品,並趕在其他人之前立即將其鑄造完成。

如果合同代碼在最初發行時是公開的,就會使得Loot和類似的項目很容易被遊戲化。

事實上,Loot和其大多數模仿者都把使用Etherscan作為他們的造幣UI,這要求源代碼在Etherscan上經過驗證。

公司已經確認,以下項目的初始發行版對上述的造幣操作是開放的。Loot、Bloot、More Loot、n、CHAR 0……

這是個非詳盡的列表,在寫這篇文章時,我還沒有發現任何其他對此開放的項目。

最令人擔憂的是,這種遊戲性會導致普通用戶和內行或具有技術知識的用戶之間產生的結果存在顯著差距。

漏洞1

More Loot是Loot的創造者dhof發布的Loot後續產品,截至本文寫作時僅發布幾個小時,從More Loot的鏈上數據中就可以明顯地發現這一漏洞產生的影響。

分析 | Loot分叉的集體漏洞——稀缺性有規律可循

上圖顯示了More Loot Bags可供鑄幣與實際鑄幣之間的分佈差異。它包括目前該系列中超過130萬個Bag的 "greatness "分數。

如果鑄幣是隨機的,我們期望這些分佈是一致的。

恰恰相反,我們可以清楚地看到,雖然絕大多數的購買是 "盲目的",但有一小部分的交易是利用合同,只對最稀有的Bag鑄幣。

自GitHub上公布了稀有度排名后,這種有針對性的鑄幣活動的頻率有所增加。

然而,即使在公開的Loot Discord中分享了這些數據后的幾個小時,有針對性的鑄幣活動仍然只佔鑄幣活動的一小部分,這表明大多數用戶都被蒙在鼓裡。

有些人可能會用 More Loot來試試水,不會太認真對待,但仍應當考慮其實際影響。

比如用戶為More Loot鑄幣支付了大約300萬美元Gas費。這些鑄幣中的絕大部分是盲目的。

隨着供應上限遠遠超過100萬個代幣,成千上萬的 "特殊 "代幣湧入市場,普通持有人的轉售前景非常暗淡。

漏洞2:CHAR 0

CHAR 0是最近另一個基於Loot的項目,從UTC 9月3日13:47到UTC 9月4日11:56,在分發9700個代幣的過程中,預計花費70萬美元的Gas費。

作為這個項目的早期礦工,產出必要的數據來識別和獲得該系列中許多最稀有的代幣,對我來說非常容易。

為了演示,我只對一個小的收藏品進行鑄幣,但沒有什麼能阻止我迅速且隱蔽地獲得前1%絕大所數的供應。

很明顯,像我這樣有動機獲取者可以從CHAR 0的用戶群中提取巨大的價值,並對項目的結果產生相當大的影響。

可能的解決方案

我會把這一部分劃定在比較高層次的討論上,並留有一些後續解決空間。以下是解決上述問題的幾種不同方法。

盲投

Hashmasks普及了盲投模式,在這種模式中創作者承諾為整個系列提供一個哈希值,在銷售結束時通過鏈上隨機性對系列順序進行洗牌。

這可以創造出公平、隨機的分配,即使是創作者也不能作弊。Hashmasks智能合約被BAYC和其他一些項目成功採用。

可改變盲投策略與Loot一起使用,同時保留所有Loot SVG由智能合約生成的屬性。

鏈上RNG

可在運行時使用鏈上隨機性使每個鑄幣的結果隨機產生。

對這種方法必須格外小心,因為鏈上隨機性的來源可能會被他人以意想不到的方式利用。

最好的方法是利用VRF,如Chainlink的VRF,但這對某些應用來說可能過於昂貴。

未驗證的合同

一個簡單的修復方法是在最初發布時保持智能合約代碼的私密性。在以下情況下,這種方法合理:

1.創建者的聲譽受到威脅;

2.合同不接受付款。

雖然這可以說是一種改進,但我強烈建議不要採用這種方法。

與盲投不同,這種方法沒有保護措施防止NFT創建者作弊。無論是通過分析鑄幣輸出還是通過字節碼反編譯,合約可能會受到逆向工程的影響。

即使合同創建者是值得信任的,然而也存在不好的先例,包括合同不接受付款,要求用戶與未經驗證的合同互動。

抗Sybil投資

最後,我有一個建議想要呼籲:使用Mirror的數據來嘗試抗Sybil的公平分配。

這是一個具有前瞻性的方法,我相信在未來會變得越來越有趣。

最後…

這些方法中的每一種都有取捨,有些可能是最初的Loot團隊所考慮的。

事實是,當前版本的Loot智能合約擴散得越多,對用戶來說情況就越糟糕。

在問題得到解決之前,這個智能合約不應該重新進行使用,至少在沒有明確溝通的情況下,鑄幣是遊戲化的,而且分配目的不是為了公平或隨機。

結尾的呼籲

所有關於社區和公平分配的討論都在於,NFT用戶應該得到更好的待遇。

他們應該有一個公平的競爭環境,他們應該得到精心設計的、不會坑害他們的代幣發行。

毋庸置疑,Loot已經引發了一場革命,是NFT持續發展的一個關鍵項目。

我想強調的是,即使是在試水,NFT開發者也要對他們的用戶負責,這包括那些從其他項目中複製粘貼代碼的開發者。

不要再吹噓那個利用你的Loot進行抄襲的傢伙通過看YouTube在一天之內學會了智能合約。

讓我們為用戶提供更安全的NFT空間,新型的和高價值的智能合約應該接受審查,或者至少由經驗豐富的智能合約開發者進行代碼審查。

眾所周知的問題應該公開進行討論,讓我們改進優秀做法,並廣泛分享,確保藝術家創作安全和富有意義的NFTs時有用武之地。

本文鏈接:https://www.8btc.com/article/6682856

轉載請註明文章出處

(0)
上一篇 2021-09-08 10:18
下一篇 2021-09-08 11:17

相关推荐