Understanding Escrow in ERC-721 NFT Smart Contracts
The ERC-721 standard helps make buying and selling unique digital items (NFTs) safe and reliable. It is crucial to secure transactions between two parties. That is where escrow services come in. They act like a safety net, holding an NFT until everyone agrees and all rules have been met. Let's explore how we can develop an escrow using the ERC-721 standard using OpenZeppelin implementation.
Sending an NFT to an Escrow
At first, the NFT asset holder needs to approve that a specific token can be used by someone else to transfer it. Only the owner of that token can execute this command.
With the implementation of OpenZeppelin ERC-721, we can call the approve(address to, uint256 tokenId)
function to delegate it.
// Send to ESCROW address
function sendToESCROW(address escrow, uint256 tokenId) public {
approve(escrow, tokenId);
}
In the code above, when the owner of the tokenId
calls this function, they delegate transfer functionality to the escrow
address. Now the escrow
account holder can transfer this NFT to another address.
We can get an approved address to check if the token has been delegated to another account. If it is a zero (0x
) address, that means it has not been delegated.