因公司專案開發的需求,一邊學習、一邊筆記 過程相當單純,使用 ethers.js,所有的前端框架都可使用

安裝 Ethers.js

套件的官網 https://www.npmjs.com/package/ethers

中文說明 https://learnblockchain.cn/ethers_v5/

英文說明 https://docs.ethers.org/v5/

npm install ethers

引用

//node 
const { ethers } = require("ethers");

//ES6 or TypeScript
import { ethers } from "ethers";

檢查錢包是否存在

整個流程的第一步,檢查錢包系統是否存在,如果不存在的話後面流程也不用走了

async function connect() {
    try {
        const { ethereum } = window;
        if (!ethereum) {
            console.log("setError", "Metamask not installed!");
            return;
        }
    } catch (error) {
        console.log(error);
    }
}

綁定錢包

最重要的流程,會打開錢包App,尋求認證

  async function requestAccess() {
      const { ethereum } = window;
      const accounts = await ethereum.request({
          method: "eth_requestAccounts",
      });
      console.log("setAccount", accounts[0]);
  }

檢查是否已經綁定錢包

錢包是否提供頁面存取的權限

  async function checkIfConnected() {
      const { ethereum } = window;
      const accounts = await ethereum.request({ method: "eth_accounts" });
      if (accounts.length !== 0) {
          console.log("setAccount", accounts[0]);
          return true;
      } else {
          return false;
      }
  }

取得簽名

拿到錢包的Address

  async function getSigner() {
    try {
        const { ethereum } = window;
        const provider = new ethers.providers.Web3Provider(ethereum);
        const signer = provider.getSigner();
        const selfAddress = await signer.getAddress()
        console.log("selfAddress",selfAddress)
        return selfAddress
    } catch (error) {
        console.log(error);
        return null;
    }
  }