a16z: Analysis of the principle and prevention of the new NFT deception "Sleep Minting"
Original Source: Old Yuppie
Original Source: Old Yuppie"Sleep Minting"As an NFT collector, you should care about the contract provenance on the chain. The most authentic provenance of NFT is minted directly from the creator's wallet or a smart contract owned by the creator. However, with a little trickery, one can use a method called
technology to manipulate the source of NFT creators.
Sleep Minting is where scammers mint NFTs directly to a famous creator’s wallet and recover NFTs from the creator’s wallet.
This creates the illusion that:
(2) The NFT was sent to a scammer;
based on"based on"chain
With provenance, scammers can claim they own an NFT minted by a famous creator and sell it for a higher value.
How does this technically work?
My a16z Crypto colleague Daren Matsuoka wrote a great article on Twitter about event logs and how they work. The transfer event log is a message sent by the smart contract to the outside world, containing details about the NFT transfer (from whom the NFT is transferred, to whom the NFT is transferred, and the transferred TOKEN ID). Transfer event logs provide an efficient way to check the provenance of NFTs.
secondary title
The Sleep Minting Scam"from "The general consensus is that if you send a transaction to transfer an NFT, then your address should be included in the event as"from "field. However, this is not the case when a scammer retrieves a sleepingNFT from a famous creator. Scammers can artificially add addresses of famous creators
Sleep minting
field."First 5000 Days "this is beeple's multimillion dollar creation"For sale on rarible. Look at the screenshot, it clearly says
But it's a scam. Its creator, Monsieur Personne, who also claims to be Banksy of NFTs, deliberately minted the piece with the beeple's name, using a technique called sleep minting. So how did he do it?
basic knowledge
basic knowledge"Bob "NFTs are created using ERC-721 smart contracts, and they hold the ownership record of NFTs as a list. An address and a serial number of a work form a pair. like this (I put"Booble")。
Alice: 1
Booble: 2
Malory: 3
replace with
After the transaction, Alice can transfer her NFT to Booble in the following ways.
Transfer 1: Alice ==> Booble
Alice:
Booble: 2, 1
Malory: 3
The list is now updated as follows:
In Ethereum, we use address names for identification, and we need to sign transfers to authorize them. But in the examples provided in this post, I'll use explicit names to simplify explanations.
Now, usually developers implement ERC-721 contracts in a reasonable way. Alice can only transfer if she owns an NFT and can provide a valid signature.
The ERC-721 standard is simply a social contract that defines an interface that allows art platforms to interoperate. As long as the contract's interface matches that of an ERC-721 contract, any machine will consider it valid.
However, as we can now see, this can lead to security issues with the provenance of NFTs on Ethereum, which can be tampered with.
As I said, any reasonable ERC-721 contract would allow miners to mint coins only for themselves, and only transfer the shards they own.
However, suppose we customize our ERC-721 contract so that we can mint to other accounts. Suppose we adjust the transfer function so that our account can also transfer another person's NFT under certain circumstances. Then, we can build a contract that allows us to sleepmint.
mint 1: address(0) =>Example: As the attacker Malory, we mint a work with serial number 1 for Booble.
Booble (performed by Malory)
Alice:
Booble: 1
Malory:
Now our pairing looks like this:
Then, since Malory has adjusted the contract to transfer the piece with serial number 1 from Booble's account to any other account, she can offer it for sale on an NFT platform like rarible."Since her minting from address (0) to Booble is"Creator--Booble
is displayed."Ethers"Once Malory successfully defrauds a buyer, she will receive her
, and sell counterfeit works to buyers.
Transfer 1: Booble => Buyer (executed by Malory).
Alice:
Booble:
Malory:
Buyer: 1
The updated ownership record now looks like this.
In this way, Malory successfully tampered with the NFT's provenance record and sold her work for more than it was worth.
details:Check carefully the information of rarible and Etherscan,
We'll find that this is more of an interface issue than a security hole. No one can access beeple's account.
Also, when you look closely at the transaction records, you can spot the tricks of the scammers:
fake mint transactions
Falsified transfer transactions"From "For mint transactions, we can see that Etherscan shows two
field. One is the transaction sent by msg.sender, and the other is the sender stating the NFT.
For the sender field of the transaction, i.e. msg.sender, it cannot be manipulated because it requires a valid signature of the sender's private key. However, the authorization of the "Tokens Transferred" field is subject to smart contract loopholes, therefore, it may be manipulated.。
Simply put, crooks can make arbitrary modifications to the "Tokens Transferred" field
Therefore, we have to check that both From and Tokens Transferred match the correct address of the beeple. If not, it's fake."rugpull "This attack it with


