From c6b9b50f9ddcddead73c205df433109cee8ab6af Mon Sep 17 00:00:00 2001 From: "tingzhao.ytz" Date: Fri, 15 Mar 2024 15:51:56 +0800 Subject: [PATCH] feat: add contract code --- 07_ContractDev/MyToken.sol | 21 +++++++++++++++++++++ README.md | 2 +- 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 07_ContractDev/MyToken.sol diff --git a/07_ContractDev/MyToken.sol b/07_ContractDev/MyToken.sol new file mode 100644 index 0000000..3b11acc --- /dev/null +++ b/07_ContractDev/MyToken.sol @@ -0,0 +1,21 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "@openzeppelin/contracts/token/ERC721/ERC721.sol"; +import "@openzeppelin/contracts/access/Ownable.sol"; + +contract MyToken is ERC721, Ownable { + uint256 private _nextTokenId = 0; + + constructor() + ERC721("MyToken", "MTK") + Ownable(msg.sender) + {} + + function mint(uint256 quantity) public payable { + require(quantity == 1, "quantity must be 1"); + require(msg.value == 0.01 ether, "must pay 0.01 ether"); + uint256 tokenId = _nextTokenId++; + _mint(msg.sender, tokenId); + } +} diff --git a/README.md b/README.md index ce3a00a..658114c 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ DApp 开发极简入门 **第 6 讲:Next.js 部署**:[教程](./06_NextJS/readme.md) -**第 7 讲:合约开发和测试**:[教程](./07_ContractDev/readme.md) +**第 7 讲:合约开发和测试**:[教程](./07_ContractDev/readme.md) | [代码](./07_ContractDev/MyToken.sol) **第 8 讲:合约部署**:[教程](./08_ContractDeploy/readme.md)