A simple NFT transfer contract that takes an ERC20 token amount for a sale to a specific person.
Enforced parameters:
- ERC721 media id
- ERC20 currency
- ERC20 amount
- address recipient
- Approve ERC721 to sell to contract
- Call
createPendingSale(address nftContract, uint256 mediaId, address currency, uint256 currencyAmount, address recipient)
- Approve ERC20 needed to purchase
- Call
purchaseNFT(address nftContract, uint256 mediaId, address currencyAddress, uint256 amount)- All these parameters need to match the sale parameters
Sales can be cancelled using cancelPendingSale(address nftContract, uint256 mediaId).
Events are emitted for analytics purposes.
Any issue (missing funds, NFT moved, etc) reverts the contract interaction.
No custody of funds nor NFT is required by this contract.