---
# System prepended metadata

title: 第 1 次讀書會實作練習 - 使用範例檔案，實作部署 ERC721 或 ERC20 作業
tags: [KryptoCamp 第 1 次讀書會實作練習]

---

# 第 1 次讀書會實作練習 - 使用範例檔案，實作部署 ERC721 或 ERC20 作業

[TOC]

## 基本題一 部屬 ERC721

#### 1.找到myToken721.sol
![](https://i.imgur.com/tmnBtB3.png)

#### 2.嘗試修改name與symbol
學生改為"CharmingFish", "CMF"
```solidity=
// contracts/GameItem.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
import "@openzeppelin/contracts/utils/Counters.sol";

contract MyNFT is ERC721 {
    constructor() ERC721("CharmingFish", "CMF") {}

    function mint(uint256 tokenId) public {
        _mint(msg.sender, tokenId);
    }
}
```

#### 3.調整 mint 數量，確定能夠拿到 2 個 ERC721 Token
![](https://i.imgur.com/JUXYJ0P.png)

#### 4.添加一個功能並且傳送 n 個數量 ERC721 Token 給二號地址
```solidity=
function transferFrom(address from,address to,uint256 tokenId) public virtual override {
    require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: caller is not token owner or approved");
    _transfer(from, to, tokenId);
}
```

#### 5.貼程式碼Gist連結 & 交易成功的截圖 
Link : https://gist.github.com/Charming0420/de47b5b82f097de6e6f1e423981551c3

截圖 : 
![](https://i.imgur.com/zXrJxfl.png)
<br>
## 基本題二 部屬 ERC20
#### 1.找到檔案中的 myToken.sol
![](https://i.imgur.com/p4fO8Xr.png)

#### 2.嘗試修改 name(CharlesToken) 與 symbol(CS)
學生改為"CharmingFish", “CMF”
```solidity=
// contracts/GLDToken.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "@openzeppelin/contracts/token/ERC20/ERC20.sol";

contract MyToken is ERC20 {
    constructor(uint256 initialSupply) ERC20("CharmingFish", "CMF") {
        _mint(msg.sender, initialSupply);
    }
}
```

#### 3.調整 mint 數量，確定能夠拿到 10,000 個 ERC20 Token
![](https://i.imgur.com/KlwNsFl.png)

#### 4.添加一個功能並且傳送 n 個數量 ERC20 Token 給二號地址
```solidity=
function buyToken(address to, uint256 amount) public{
    address owner = msg.sender;
    _transfer(owner,to,amount);
}
```

#### 5.貼程式碼Gist連結 & 交易成功的截圖
Link : https://gist.github.com/Charming0420/655c877277c7126a37a238cabbcc677d

截圖 :
![](https://i.imgur.com/IFoX5f0.png)
<br>

<!-- ## 進階題一 ERC721自行添加功能優化，部署至Goreli測試鏈

#### 1. 選擇一個測試用的錢包
#### 2. MetaMask中選擇Goreli網路進行部署
#### 3. 將必要完成作業的合約部署至Goreli測試鏈
#### -->

###### tags: `KryptoCamp 第 1 次讀書會實作練習`
