a16z:淺析NFT新騙術「Sleep Minting」的原理與預防
原文來源:老雅痞
原文來源:老雅痞"Sleep Minting"原文來源:老雅痞
原文來源:老雅痞
作為一個NFT收藏家,你應該關心鏈上的合約出處,NFT最真實的出處是直接從創造者的錢包或創造者擁有的智能合約中鑄造出來的。然而,通過一些小技巧,有人可以使用一種被稱為
的技術來操縱NFT的創作者來源。
Sleep Minting是指詐騙者直接將NFT鑄造到一個著名的創作者的錢包,並從創作者的錢包中回收NFT。
這就造成了這樣的假象:"(2)將該NFT發送給了一個騙子;"基於
基於
鏈上
我的a16z Crypto同事Daren Matsuoka在Twitter上寫了一篇關於事件日誌和它們如何工作的精彩文章。轉移事件日誌是由智能合約向外界發送的消息,包含關於NFT轉移的細節(NFT從誰轉移,NFT向誰轉移,以及轉移的TOKEN ID)。轉移事件日誌提供了一種有效的方式來檢查NFT的來源。
二級標題
二級標題"from "二級標題"from "大眾認為,如果你發送交易來轉移NFT,那麼你的地址應該在event中作為
Sleep minting
字段。"First 5000 Days "字段。然而,當一個騙子從一個著名的創造者那裡取回一個sleepingNFT時,情況就不是這樣了。騙子可以人為地將著名創作者的地址加上"字段。
這是beeple的數百萬美元的作品
在rarible上出售。看看截圖,上面清楚地寫著
但這是個騙局。它的創造者Monsieur Personne,也自稱是NFTs的Banksy,故意用beeple的名字鑄造了這幅作品,他使用了一種叫做sleep minting的技術。那麼他是如何做到的呢?"Bob "基礎知識"Booble")。
Alice: 1
Booble: 2
Malory: 3
基礎知識
NFTs是使用ERC-721智能合約創建的,他們把NFTs的所有權記錄作為一個列表。一個地址和一個作品的序列號組成一個對。像這樣(我把
換成
Alice:
Booble: 2, 1
Malory: 3
成交後,Alice可以通過以下方式將她的NFT轉讓給Booble。
轉讓1:Alice ==> Booble
現在列表更新如下:
在以太坊,我們用地址名字來識別,而且我們需要簽署轉賬來授權。但是在這篇文章提供的例子中,我將使用明確的名字來簡化解釋。
現在,通常開發者以合理的方式實現ERC-721合約。 Alice只有在她擁有一個NFT並能提供有效簽名的情況下才可以轉讓。
ERC-721標準只是一個社會契約,它定義了一個允許藝術平台互操作的接口。只要合同的接口與ERC-721合同的接口相匹配,任何機器都會認為它是有效的。
但是,正如我們現在所看到的,這可能會導致以太坊上的NFTs出處出現安全問題,它是可以被篡改的。
mint 1: address(0) =>正如我所說,任何合理的ERC-721合約都會允許礦工只為自己造幣,並且只轉讓他們擁有的碎片。
但是,假設我們定制了我們的ERC-721合約,使我們可以向其他賬戶鑄造。假設我們調整了轉讓功能,使我們的賬戶在某些情況下,也可以轉讓另一個人的NFT。那麼,我們就可以建立一個允許我們sleepmint的合約。
Alice:
Booble: 1
Malory:
舉例:作為攻擊者Malory,我們給Booble鑄造一個序列號為1的作品。
Booble (由Malory執行)"現在我們的配對看起來如下:"然後,由於Malory已經調整了合同,將序列號為1的作品從Booble的賬戶轉移到任何其他賬戶,她可以在像rarible這樣的NFT平台上提供出售。
由於她從地址(0)到Booble的鑄幣為"Ethers"創造者--Booble
被顯示出來。
一旦Malory 成功詐騙了一個買家,她就會收到她的
Alice:
Booble:
Malory:
Buyer: 1
,並將假冒作品賣給買家。
轉讓1:Booble => 買方(由Malory執行)。
更新後的所有權記錄現在是這樣的。就這樣,Malory成功地篡改了NFT的創作出處記錄,以高於其價值的價格出售了她的作品。
具體細節:
仔細查看rarible和Etherscan的信息,
我們會發現這更像是一個接口問題,而不是一個安全漏洞。沒有人能夠進入beeple的賬戶。
另外,當仔細看一下交易記錄時,可以發現騙子的手法:"From "偽造的mint交易
偽造的轉賬交易
對於mint交易,我們可以看到Etherscan顯示兩個。
字段。一個是msg.sender發送的交易,另一個是說明NFT的發件人。
對於交易的發件人字段,即msg.sender,它不能被人為操縱,因為它需要發件人的私鑰的有效簽名。然而,對“Tokens Transferred”的字段的授權受制於智能合約的漏洞,因此,可能會人為操縱。"rugpull "簡單地說,騙子可以對“Tokens Transferred”字段進行任意修改


