- 上一篇:【p2p、分布式,区块链笔记 Blockchain】truffle001 以太坊开发框架truffle初步实践
项目结构
合约:RentablePets.sol
mint
函数:允许用户创建新的 NFT,并为其设置唯一的 token ID 和元数据 URI。
mint - 百度翻译
英[mɪnt] 美[mɪnt]
n. 薄荷;造币厂;薄荷糖;铸币厂;大量的钱;
vt. 铸(币);铸造(硬币);
adj. 完美的;新造的;
burn
函数:允许用户销毁指定 ID 的 NFT,删除该 NFT 及其相关数据。
solidity
pragma solidity >=0.4.22 <0.9.0;
import "./ERC4907.sol";
import "@openzeppelin/contracts/utils/Counters.sol";
contract RentablePets is ERC4907 {
using Counters for Counters.Counter;
Counters.Counter private _tokenIds;
constructor() ERC4907("RentablePets", "RP") {
}
function mint(string memory _tokenURI) public {
_tokenIds.increment();
uint256 newTokenId = _tokenIds.current();
_safeMint(msg.sender, newTokenId);
_setTokenURI(newTokenId, _tokenURI);
}
function burn(uint256 tokenId) public {
_burn(tokenId);
}
}
- ERC4907 和 Counters 导入:引入了自定义的 ERC4907 标准(可租赁的 NFT 标准)和 OpenZeppelin 的计数器工具,用于自动生成唯一的 token ID。
- 合约定义:合约
RentablePets
继承了 ERC4907 的所有功能(包括 ERC721 标准和租赁扩展)。
- 构造函数:初始化合约时,设定 NFT 名称为 “RentablePets”,符号为 “RP”。
solc: {
version: ">=0.4.22 <0.9.0"
}
{
"dependencies": {
"@openzeppelin/contracts": "^4.8.0",
"@truffle/hdwallet-provider": "^1.7.0"
},
"devDependencies": {
"@openzeppelin/test-helpers": "^0.5.15"
}
}
迁移部署:migrations/1_deploy_contracts.js
migrations
英[/maɪˈgreɪʃənz/] 美[/maɪˈgreɪʃənz/]
n.(程序或硬件的)迁移,转移;迁移;迁徙;移居;(计算机系统的)改变
migration的复数
const RentablePets = artifacts.require("RentablePets");
module