现货合约量化交易系统开发源码(现成搭建)

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

什么是 NFT

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

简易版 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);
}

}

相关文章
|
数据库
kettle开发篇-合并记录
kettle开发篇-合并记录
907 0
|
5月前
|
人工智能 搜索推荐 大数据
数字化转型三阶段:信息化、数字化、数智化分别代表着什么?
企业数字化转型分为信息化、数字化、数智化三个阶段,三者可并行推进。信息化实现业务数据化,提升管理效率;数字化打通信息孤岛,优化运营流程;数智化融合数据与智能技术,推动业务与管理智能化升级,助力企业构建新竞争优势,实现全面转型升级。
|
7月前
|
测试技术 UED
全新开源通义千问Qwen3,它来了!
Qwen3是通义千问系列的最新模型,融合推理与非推理模式,兼具QwQ和Instruct模型能力。提供多种尺寸,包括235B-A22B、30B-A3B及六个Dense模型,大幅提升数学、代码、逻辑推理和对话能力,达到业界领先水平。旗舰模型Qwen3-235B-A22B在多场景测试中表现优异,小型模型如Qwen3-4B性能媲美大模型。用户可在阿里云百炼平台免费体验各100万Token。
7069 4
全新开源通义千问Qwen3,它来了!
|
消息中间件 缓存 运维
|
编解码 机器人 C++
ROS2教程07 ROS2自定义消息接口
这篇文章是关于如何在ROS2(Robot Operating System 2)中创建和使用自定义消息类型的教程,包括消息类型的定义、特点、命令行工具的使用,以及如何编写和测试自定义消息类型接口的步骤。
927 0
ROS2教程07 ROS2自定义消息接口
|
JSON Java API
Java一分钟之-JPA实体关系:一对一, 一对多, 多对多
【6月更文挑战第14天】Java Persistence API (JPA) 的 ORM 规范简化了数据库操作,重点是实体关系映射。本文讨论了三种主要关系:一对一、一对多和多对多。对于每种关系,都指出了常见问题(如循环引用、懒加载异常)和避免策略(使用注解解决循环引用,明确级联操作边界等)。同时,提供了示例代码以展示如何在实践中设置这些关系。理解并妥善处理这些问题能提升开发效率和数据准确性。
794 1
|
存储 索引
Elasticsearch中父子文档的关联:利用Join类型赋予文档的层级关系
Elasticsearch中父子文档的关联:利用Join类型赋予文档的层级关系
|
缓存 PHP 开发者
提升Web开发效率:PHP 7.4中的性能优化技巧
【4月更文挑战第13天】本文深入探讨了PHP 7.4版本中引入的新特性和性能改进,旨在帮助开发者通过实用的编码技巧和最佳实践来提升Web应用的开发效率和运行性能。文章将重点介绍如何利用这些新特性进行代码优化,以及它们在实际项目中的应用场景。
|
存储 算法 C++
BackTrader 中文文档(二十八)(3)
BackTrader 中文文档(二十八)
295 0