エーテルを使用して署名を生成し検証する方法を学ぶ


ethersモジュールは、JavaScript(およびtypescript)で完全なEthereum財布実装とユーティリティを提供します.

エーテルのインポート

import { ethers } from "ethers"

財布のインストールを確認する


const isWalletInstalled = () => {
  if (!window.ethereum) {
    throw new Error("No crypto wallet found. Please install it.");
  } else {
    return true;
  }
};

依頼口座


const requestAccount = async () => {
  if (!window.ethereum) {
    throw new Error("No crypto wallet found. Please install it.");
  }
  const accounts = await window.ethereum.send("eth_requestAccounts");
  if (accounts.result.length) {
    const account = accounts.result[0];
  }
};

メッセージに署名するための財布の使用


const signMessage = async (message) => {
  try {
    if (isWalletInstalled()) {
      const provider = new ethers.providers.Web3Provider(window.ethereum);
      const signer = provider.getSigner();
      const signature = await signer.signMessage(message);
      const address = await signer.getAddress();
      return {
        signature,
        address,
      };
    }
  } catch (err) {
    console.log(err);
  }
};

確認メッセージ


const verifyMessage = async ({ message, address, signature }) => {
  try {
    const signerAddr = await ethers.utils.verifyMessage(message, signature);
    if (signerAddr !== address) {
      return false;
    }
    return true;
  } catch (err) {
    console.log(err);
    return false;
  }
アルト・チャロ