# KryptoCamp Week2 HW 實作部署 ERC721, ERC20 ## 第一題 (ERC20) ### 基本題 部署方式選擇 JavaScript VM(Lodon) 1. 找到檔案中的 myToken721.sol 2. 嘗試修改 name 與 symbol 3. 調整 mint 數量,確定能夠拿到 2 個 ERC721 Token 4. 添加一個功能並且傳送 n 個數量 ERC721 Token 給二號(ex. 0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2)地址 5. 貼 程式碼 Gist 連結 & 交易成功的截圖 ```=solidity pragma solidity ^0.8.0; import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; contract HooToken is ERC20 { uint public initialSupply = 10000000; constructor() ERC20("HooToken", "HT") { _mint(msg.sender, initialSupply); } function mint(uint _amount, address _to) public payable { _mint(_to, _amount); } } ``` #### JavaScript VM(Lodon) ![](https://i.imgur.com/VkXjIMk.png) ![](https://i.imgur.com/6TbZjzO.png) #### Injected Web3(Metamask) ![](https://i.imgur.com/3bzG4D5.png) ![](https://i.imgur.com/qxJI6pC.png) https://rinkeby.etherscan.io/tx/0x5999a7f10bb1248bd6382316ec605872039206575414c2d0f5b0eec8e14ea377 ## 第二題 (ERC721) ### 基本題 1. 選擇一個測試用的錢包(請新開錢包盡量不要用原本自己在使用的) 2. Metamask 中選擇 Rinkeby 網路進行部署 3. 將必要完成作業的合約部署至 Rinkeby 測試鏈 4. 進行呼叫,並且傳送 1 個 ERC721 Token 至(0x8c86618D194627172101812b51B4b9bB794DAC4c)地址 5. 自行嘗試是否能新增額外功能,使用最直覺撰寫方式即可,不需要針對燃料費用或程式內容進行優化 例如(燃燒 ERC721 Token、退款 ERC721 Token、鑄造購買時將多餘的金額進行自動退款,或有其他想法也行)。 *自行嘗試功能不一定要非常完整,但至少必須要能夠提出偽代碼,並且說明用途,在實體課程時可以一起討論實作方式。 6. 貼 程式碼 Gist 連結 & 交易成功的截圖 ``` pragma solidity ^0.8.0; import "@openzeppelin/contracts/token/ERC721/ERC721.sol"; import "@openzeppelin/contracts/utils/Counters.sol"; contract HooNFT is ERC721 { constructor() ERC721("HooNFT", "HOO") {} uint256 _tokenId = 0; uint256 _maxSupply = 100; uint256 _price = 10; function mint(uint256 tokenId) public { require(_tokenId < _maxSupply, "sold out"); _mint(msg.sender, tokenId); ++_tokenId; } function trasferTokens(uint256[] memory id, address _to) public { require(balanceOf(msg.sender) > 0, "not enough NFT"); for(uint i = 0; i < id.length; i++) { safeTransferFrom(msg.sender, _to, id[i]); } } } ``` #### 修改 name 與 symbol ![](https://i.imgur.com/PXVgHKW.png) #### 轉移 2個 NFT ##### JavaScript VM(Lodon) ![](https://i.imgur.com/pXaQEmK.png) ##### Injected Web3(Metamask) ![](https://i.imgur.com/hBApmVS.png) https://rinkeby.etherscan.io/tx/0x410942aafb3c6c073181d529ff551212c4c52c2d49d5537f4d6c86939020191f ###### tags: `KryptoCamp`