Solidity编程学习示例代码

WB3交流加微信:WX-93588,⬅️此处为全站广告位,与正文项目无关
注册并登录App即可领取高达 60,000 元的数字货币盲盒:点击此处注册OKX

的id都是仅有的。通过以上步骤,咱们现已将合约编译并布置到了这个在线合约编辑器提供的本地测试网络上。

当然,如果咱们想将合约布置到以太坊的实践网络上,咱们只需切换网络并连接咱们的浏览器插件钱包即可。

在这份ERC721代码中,咱们完成的功能是任何人都能够调用合约的mint方法铸造自己的NFT,每个NFT的id都是仅有的。接下来,咱们将仔细分析和解说源代码。

ERC721.sol

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.12;

import “@openzeppelin/contracts/tOKen/ERC721/extensions/ERC721Enumerable.sol”;
import “@openzeppelin/contracts/access/Ownable.sol”;
import “@openzeppelin/contracts/utils/Counters.sol”;

contract MyNFT is ERC721Enumerable, Ownable {
using Counters for Counters.Counter;
using Strings for uint256;

Counters.Counter private _tokenIdTracker;

event Mint(address indexed from, address indexed to, uint256 indexed tokenId);

uint256 private _currentTokenId = 0;
string private constant _baseTokenURI = “https://ipfs.io/ipfs/QmXgMRpwoEtuhksEJ7LD9ySLzAvAM5tqs1q6rGZ38Qg1Kf/”;
string public baseExtension = “.json”;

constructor(string memory name, string memory symbol) ERC721(name, symbol) {
require(bytes(name).length != 0 && bytes(symbol).length != 0, “name and symbol can’t be empty”);
}

function tokenURI(uint256 tokenId) public view override returns (string memory) {
return string(abi.encodePacked(_baseTokenURI, tokenId.toString(), baseExtension));
}

function mint() external {
uint256 tokenId = _tokenIdTracker.current() + 1;
_mint(msg.sender, tokenId);
_tokenIdTracker.increment();
emit Mint(address(0), msg.sender, tokenId);
}
}
导入”@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol”;
导入”@openzeppelin/contracts/access/Ownable.sol”;
导入”@openzeppelin/contracts/utils/Counters.sol”;
发行代币需求恪守相应的EIP协议,之前的ERC20代币遵循的是EIP20协议。OpenZeppelin是一个用于开发安全智能合约的库,它的代码经过社区审核并且有很强的社区支撑,完成了标准代币接口,因而咱们能够放心肠运用import指令将其导入到咱们的代码中。因而,在这里,咱们与ERC20代码类似,也导入了其代码接口文件。
contract MyNFT is ERC721Enumerable, Ownable {}
运用is将咱们需求用到的文件方法承继到主合约中,这样咱们就能够运用来自承继合约的一切方法。
using Counters for Counters.Counter;
using Strings for uint256;
Counters.Counter private _tokenIdTracker;
由于Counter.sol是一个库合约,所以咱们需求运用using指令来运用这个库合约。具体的运用方式是将库函数(来自库A)附加到任何类型(B)。
在下面的代码中,咱们将运用Counters库来将uint类型的tokenId转换成string类型,所以咱们还需求运用Strings库的方法。
_tokenIdTracker变量直接运用库合约Counters的方法来声明其类型。
event Mint(address indexed from, address indexed to, uint256 indexed tokenId);
咱们声明晰一个Mint事件,在执行mint方法时,能够回来具体的ID。

此时快讯

【Blur创始人:NFT领域需要Layer 2,已为Blur生态筹集4000万美元推动发展】11月21日消息,Blur 创始人 Pacman 在社交媒体上发文表示,我们看到的 NFT 的两个最大机会是降低交易成本和机构级 NFT 永续权益。NFT 交易的 Gas 已花费数亿美元,永续合约交易量是现货交易量的 6 倍,这些机会需要 L2。
此外,Pacman 还筹集了另外 4000 万美元来为 Blur 生态系统做出贡献。这些资金将用于构建 NFT 的 L2 应用程序,并继续在 ETH L1 上推动 NFT 发展。Pacman 表示将亲自监督 Blur 和 Blast 两个项目的发展。
此前报道,由 Blur 创始人 Pacman 推出的,基于 Optimistic Rollup 的 Layer 2 网络 Blast 今日宣布完成 2000 万美元融资。

版权声明:本文收集于互联网,如有侵权请联系站长删除。
转载请注明:Solidity编程学习示例代码 | 币百度

相关文章