本文合约实现简单的 NFT 市场,仅实现单一 NFT 合约资产的拍卖与交易:
三种模式:
- England 拍卖模式:nft owner设置初始起拍价格,竞拍者逐步提高价格发起 offer,价高者得;只能通过 offer 与接受 offer 达成,完成交易主动权在 owner;
- Netherlands 拍卖模式:nft owner 设置初始价格,竞拍者给出满足该价格的 offer 或者价格更低的 offer,nft owner 可以主动降价,直到有双方都满意的价格出现; 只能通过 offer 与接受 offer 达成,完成交易主动权在 owner;
- Simple 定价模式:nft owner 设置初始价格,出价者可任意给 offer,或者直接通过simpleBuyNFT() 按当前最高标价购买; 可以通过 offer 或直接购买达成,完成交易主动权在双方;
一、合约源码
1.SummerNFT.sol
标准 NFT 合约;源码:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "../openzeppelin/contracts/utils/Counters.sol";
import "../openzeppelin/contracts/token/ERC721/ERC721.sol";
import "../openzeppelin/contracts/token/ERC721/extensions/ERC721Enume