简易版NFT合约代码
【简易版NFT合约代码】本来是想一步一步从solidity基础语法做个系列教程,但是这种基础知识,网上资料已经很多了,一搜一大片,而且官方的文档也讲的很详细,所以本文默认是已经了解了相关的知识。
什么是NFT
NFT 是我们用以代表独特物品所有权的代币。 NFT 让我们把诸如艺术品、收藏品、甚至房地产等物品代币化。 他们一次只有一个正式主人,并且受到以太坊区块链的保护 - 没有人可以修改所有权记录或者根据现有的 NFT 复制粘贴一份新的。
NFT 代表非同质化
代币。 非同质化是一个经济术语,您可以用它来描述家具、歌曲文件或您的电脑等物品。 这些东西不能与其他物品互换,因为它们具有独特属性。
另一方面,同质化
物品可以互换,这取决于它们的价值而非独特属性。 例如,ETH 或美元具有同质化属性,因为 1 ETH/1 USD 可以兑换成另外的 1 ETH/1 USD。
简易版NFT合约代码
pragma solidity ^0.8.4;
import '@openzeppelin/contracts/token/ERC721/ERC721.sol';
import '@openzeppelin/contracts/access/Ownable.sol';
// 继承ERC721, Ownable
contract SimpleMintContract is ERC721, Ownable {
// mint 价格
uint256 public mintPrice = 0.05 ether;
// 总共已经被mint数量
uint256 public totalSupply;
// 可以mint的最大数量
uint256 public maxSupply;
// 是否开启mint
bool public isMintEnabled;
// 每个地址mint => 数量
mapping(address => uint256) public mintedWallets;
// 构造函数,部署合约的时候,设置最大数量为2
constructor() payable ERC721('Simple Mint', 'SIMPLEMINT') {
maxSupply = 2;
}// 外部调用函数,开启mint
function toggleIsMintEnabled() external onlyOwner {
isMintEnabled = !isMintEnabled;
}// 设置最大mint数量
function setMaxSuppley(uint256 _maxSupply) external onlyOwner {
maxSupply = _maxSupply;
}// mint函数
function mint() external payable {
// require判断函数,前半部判断为false,则抛出后半部分信息
// 判断是否开启mint
require(isMintEnabled, 'minting not enabled');
// 判断地址是否已经mint
require(mintedWallets[msg.sender] < 1, 'exceeds max per wallet');
// 判断发送到合约的eth数量是否跟mint价格一样
require(msg.value =https://www.it610.com/article/= mintPrice,'wrong value');
// 判断是否还有可以mint的数量
require(maxSupply > totalSupply, 'sold out');
mintedWallets[msg.sender]++;
totalSupply++;
uint256 tokenId = totalSupply;
_safeMint(msg.sender, tokenId);
}
}
推荐阅读
- SAP|SAP UI5 应用开发教程之七十 - 如何使用按钮控件触发页面路由跳转试读版
- Android的简易圆形头像
- 系统正版win7安装办法
- 风林木雨win7纯净版下载介绍
- win7 32位系统原版安装图文详细教程
- 系统之家win7专业版系统安装图文详细教程
- 萝卜家园win7安装版旗舰版免费下载
- 戴尔系统win732位装机旗舰版推荐
- windows7旗舰版安装包安装图文详细教程
- 系统之家正版win7大师重装图文详细教程