前置作業
安裝依賴
安裝 Truffle 命令列工具。
1 | npm install -g truffle@5.0.2 |
建立專案
使用 truffle
指令初始化專案。
1 | truffle init eth-todo-list |
新增 .gitignore
檔。
1 | /node_modules |
合約實作
新增 contracts/TodoList.sol
檔。
1 | // SPDX-License-Identifier: MIT |
修改 truffle-config.js
檔,將網路指向 Ganache 的端點。
1 | module.exports = { |
新增 migrations/2_deploy_contracts.js
檔。
1 | const TodoList = artifacts.require('TodoList'); |
部署至 Ganache 本地區塊鏈。
1 | truffle migrate --reset |
設置錢包
在 MetaMask 錢包新增一個測試網路:
- 網路名稱:Localhost 7545
- RPC URL:http://localhost:7545
- 鏈 ID:1337
- Currency Symbol:ETH
將 Ganache 中帳戶的私鑰匯入至 MetaMask 錢包。
實作前端
安裝依賴套件。
1 | npm i vite ethers dotenv --save |
新增 .env
檔。
1 | VITE_CONTRACT_ADDRESS=your-contract-address |
修改 package.json
檔。
1 | { |
在根目錄新增 index.html
檔。
1 | <html lang="en"> |
新增 src/main.js
檔。
1 | import { ethers } from 'ethers'; |
啟動網頁。
1 | npm run dev |
部署
安裝套件。
1 | npm i @truffle/hdwallet-provider truffle-plugin-verify --save-dev |
修改 .env
檔。
1 | PROVIDER_URL=wss://eth-goerli.g.alchemy.com/v2/your-api-key |
修改 truffle-config.js
檔。
1 | const HDWalletProvider = require('@truffle/hdwallet-provider'); |
部署到 Goerli 測試網路。
1 | truffle migrate --network goerli |
提交認證
在 Etherscan 提交認證。
1 | truffle run verify TodoList --network goerli |