智能合約 Solidity 教學 (中) - MetaMask 與以太坊測試網

智能合約 Solidity 教學 (中) - MetaMask 與以太坊測試網
📅 發布時間: 2025-01-29 🏷️ 標籤: Solidity, MetaMask, 以太坊測試網, 智能合約部署, Remix IDE

這篇文章繼承了上一篇智能合約 Solidity 教學 (上),將嘗試使用 MetaMask 連接測試網,如何領取測試幣,並且在前端整合:透過 Web3.js 連接你的 DApp 與合約。


目錄

MetaMask 使用教學:從安裝到與智能合約互動

一、MetaMask 錢包

錢包,是 Web3 世界的身分證也是通行證
基本上所有與 Web3 互動都需要依賴錢包

今天我們將從最多人使用 MetaMask 開始

1. 什麼是 MetaMask?

MetaMask 是一款 以太坊數位錢包 (Ethereum Wallet),可以讓你:

  • 管理你的 ETH 和其他代幣 (ERC-20, ERC-721 NFT)
  • 連接 DApp,讓瀏覽器與區塊鏈互動
  • 簽署交易,進行資金轉移或呼叫智能合約
  • 切換測試網,在開發時使用「假幣」測試智能合約

它既是一個 Chrome/Firefox 擴充插件,也有 行動版 App 可用。


2. 安裝 MetaMask

Step 1:下載並安裝

  1. 打開官方網站 👉 https://metamask.io/
  2. 點擊「Download」,選擇 Chrome/Firefox 擴充功能或 手機版 App。
  3. 安裝後,你會在 瀏覽器右上角 看到 MetaMask 狐狸頭 🦊。

Step 2:建立新錢包

  1. 點擊 「開始使用」
  2. 「創建新錢包」
  3. 設定 密碼(這個密碼只用來解鎖你的 MetaMask)
  4. 保存助記詞(Secret Recovery Phrase)
    • 這是你的「錢包私鑰」,一定要抄下來並存放在安全地方!
    • 千萬不要與他人分享,丟失後無法恢復!

Step 3:完成設定

MetaMask 會自動連接 以太坊主網 (Ethereum Mainnet),
但我們在開發時,通常會用 測試網 來避免消耗真實 ETH。


3. 切換測試網 (Goerli / Sepolia / Polygon Testnet)

以太坊提供 測試網(Testnets),允許開發者使用「假幣」進行測試,而不會消耗真實資金。
目前常見的測試網:

  • Sepolia Testnet(官方推薦)
  • Goerli Testnet(即將淘汰)
  • Polygon Mumbai Testnet(Polygon 測試鏈)

如何開啟測試網

  1. 打開 MetaMask,點擊 右上角的「網路選單」
  2. 點擊 「顯示/隱藏測試網路」
  3. 開啟「顯示測試網路」
  4. 選擇 Sepolia Testnet

現在,你的 MetaMask 已切換到 測試網,可以進行開發測試!


4. 如何領取測試幣 (Faucet)

測試網上的 ETH 不是實際貨幣,而是開發者測試時使用的「假幣」,
我們可以從 Faucet(水龍頭) 領取測試 ETH。
目前有 Alchemy Faucet 或 Infura Faucet 他們能一次領取較多,但需要綁定帳號
所以我們從最簡單的 Google Cloud for Web3 來領取

如何領取 Sepolia 測試 ETH

  1. 打開 https://cloud.google.com/application/web3/faucet/ethereum/sepolia
  2. 輸入你的 錢包地址(MetaMask 內複製)
  3. 點擊「Request ETH」領取測試幣
  4. 等候 1-2 分鐘,ETH 會發送到你的測試錢包

💡 測試幣用途:

  • 部署測試合約
  • 測試智能合約功能
  • 測試 DApp 與合約互動

5. 如何讓智能合約與 MetaMask 互動

現在我們要將剛剛的 HelloWorld.sol 合約,透過 MetaMask 來 與前端互動!


💻 透過 MetaMask 部署 HelloWorld 智能合約到 Sepolia 測試網

🎯 學習目標:使用上次教學的智能合約程式碼在 Remix IDE 透過 WalletConnect 連接 MetaMask部署合約並確認 MetaMask 簽署交易觀察測試幣消耗並呼叫合約功能

步驟 1: 我們使用上次教學使用的智能合約程式碼來部署

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract HelloWorld {
    // 儲存訊息的變數
    string public message;

    // 建構函式,合約部署時會自動執行
    constructor() {
        message = "Hello, Solidity!";
    }

    // 設定新的訊息
    function setMessage(string memory _newMessage) public {
        message = _newMessage;
    }
}

步驟 2: 在 Remix IDE 點擊 Deploy & Run Transactions 面板 選擇 WalletConnect

在 Remix IDE 中選擇 WalletConnect

圖:在 Remix IDE 的 Deploy & Run Transactions 面板中選擇 WalletConnect 來連接錢包


步驟 3: 點擊連結錢包

點擊連結錢包

圖:點擊連結錢包按鈕以啟動連接流程


步驟 4: 選擇我們剛剛創辦好的 MetaMask

選擇 MetaMask

圖:從可用錢包清單中選擇 MetaMask


步驟 5: 以這個錢包來部署該合約 這個合約會被部署到 Sepolia 網路上

部署合約到 Sepolia

圖:使用選定的 MetaMask 錢包部署合約至 Sepolia 測試網


步驟 6: 由於這是真的會消耗到你錢包中的錢錢!!! 所以會跳出 MetaMask 的提示框 本次部署合約將消耗快 6 美元(超貴 請注意是使用 Sepolia 來支付,那才是免費的測試幣

MetaMask 確認交易

圖:MetaMask 彈出確認視窗,顯示 Gas 費用(使用 Sepolia 測試幣支付,避免真實 ETH 消耗)


步驟 7: 跟剛剛一樣,部署好以後 我們可以打開部署好的合約 然後重新 SetMessage 一樣要花錢 (0.3 美元)

呼叫 setMessage 函式

圖:部署成功後,展開合約實例並呼叫 setMessage 函式,同樣需 MetaMask 確認交易


下一篇文章