NFT智能合约分红系统开发搭建(现成源码)
2023-06-13 09:13:59 时间
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 == mintPrice, 'wrong value');
// 判断是否还有可以mint的数量
require(maxSupply > totalSupply, 'sold out');
mintedWallets[msg.sender]++;
totalSupply++;
uint256 tokenId = totalSupply;
_safeMint(msg.sender, tokenId);
}
}
相关文章
- PHP在线客服系统平台源码(完全开源的网页在线客服系统)
- Postgresql源码(83)执行器的结果接收系统——DestReceiver
- react源码中的生命周期和事件系统
- 老弟手把手教你编译Spark3.2.1源码!!!!!
- 佛萨奇DAPP开发丨佛萨奇2.0系统开发详情丨佛萨奇2.0智能合约系统开发原理及源码
- 佛萨奇2.0波场链/币安链/马蹄链DAPP智能合约系统开发成功案例及源码交付
- Python实现智能互动拍照系统(毕设源码)
- 从源码层面理解 React 是如何做 diff 的
- Mybatis返回集合类型到底是空集合还是null?源码解读
- 元宇宙游戏链游系统开发丨元宇宙游戏链游系统源码案例开发
- H5/APP客服端源码/uniapp在线客服系统源码开源了,全源码代码解读及发行安装教程
- 【Android 进程保活】应用进程拉活 ( 系统 Service 机制拉活 | Service 组件 onStartCommand 方法分析 | 源码资源 )
- 从零开始:MySQL 源码开发之旅(mysql源码开发)
- MySQL的源码安装指南(mysql源码安装)