前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于solidity智能合约dapp程序开发流程

关于solidity智能合约dapp程序开发流程

原创
作者头像
开发v_syn520110
发布2022-11-09 09:39:26
4360
发布2022-11-09 09:39:26
举报
文章被收录于专栏:MMMKA

什么是 NFT

NFT 是我们用以代表独特物品所有权的代币。 NFT 让我们把诸如艺术品、收藏品、甚至房地产等物品代币化。 他们一次只有一个正式主人,并且受到以太坊区块链的保护 - 没有人可以修改所有权记录或者根据现有的 NFT 复制粘贴一份新的。

NFT 代表非同质化代币。 非同质化是一个经济术语,您可以用它来描述家具、歌曲文件或您的电脑等物品。 这些东西不能与其他物品互换,因为它们具有独特属性。

简易版 NFT 合约代码

代码语言:javascript
复制
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);
    }
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
区块链
云链聚未来,协同无边界。腾讯云区块链作为中国领先的区块链服务平台和技术提供商,致力于构建技术、数据、价值、产业互联互通的区块链基础设施,引领区块链底层技术及行业应用创新,助力传统产业转型升级,推动实体经济与数字经济深度融合。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档