铸造NFT的过程就是创建NFT的过程。案例这是通过向***部署智能合约来实现,它将存储关于NFT的信息,包括它的代币ID和策略ID。对于不懂Solidity等智能合约语言的人来说,这可能是一个重大障碍。NFT铸造有时也可能涉及高昂的gas费开发181流程**2591技术3365案例,这对于首次铸造的人来说可能是负担不起的。
在学习的过程中,我学会了一些技巧,现在我想把它们分享给其他初学者。第一个技巧是铸造NFT,而无需学习如何使用Tatum NFT Express编写智能合约。
Tatum NFT Express是一个工具,让我们无需编写智能合约或支付高昂的gas费就可以创建NFT。通过消除与**NFT相关的高昂管理成本、复杂性和安全问题,并避免加密货币相关的任何监管挑战,这为世界各地的企业提供了机会。在不拥有任何加密货币的情况下,用户可以使用Tatum在许多***上进行铸造。
使用Tatum NFT Express,用户可以立即制造他们想要的NFT——Ethereum,Solana,Polygon,Celo和Cardano。此外,该工具解决了许多安全问题,允许企业快速地将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);
}
}