创建一个简单的Web3应用程序来连接并在7分钟内与钱包签名
#javascript #教程 #web3 #ethereum

您准备好学习如何连接到钱包并使用Web3.js和metAmask签署消息了吗? ðü©本分步指南将向您展示如何使用这些强大的工具来创建此web3 app

只有几行代码,您就可以连接到钱包并立即签署消息! ð,不用担心您是Web3.js和MetAmask的新手,我们为您提供了详细的说明和易于遵循的说明。

步骤1:创建一个新的代码框项目

转到CodeSandbox并单击“创建沙盒”按钮创建一个新项目。选择“香草”模板以创建具有基本HTML,CSS和JavaScript设置的新沙盒。
您应该安装我们将在下一步中使用的web3依赖项。

Image description

步骤2:修改HTML文件

在Codesandbox编辑器中,打开index.html文件,并用以下代码替换其内容:

<!DOCTYPE html>
<html>
  <head>
    <title>Wallet Connection Example</title>
    <meta charset="UTF-8">
  </head>
  <body>
    <h1>Wallet Connection Example</h1>
    <button id="connectBtn">Connect Wallet</button>
    <button id="signBtn" disabled>Sign Message</button>
    <div id="confirmation"></div>

    <script src="./src/index.js"></script>
  </body>
</html>

此代码定义了一个基本的HTML页面,该页面带有两个按钮和一个DIV,以显示签名的消息确认。我们还提供了一个脚本标签来加载我们的JavaScript代码,我们将在下一步中编写。

步骤3:修改JavaScript文件

现在打开src/index.js文件,并用以下代码替换其内容:

import Web3 from 'web3';

const connectBtn = document.getElementById('connectBtn');
const signBtn = document.getElementById('signBtn');
const confirmationDiv = document.getElementById('confirmation');

// Check if MetaMask is installed
if (typeof window.ethereum === 'undefined') {
  connectBtn.innerText = 'Install MetaMask';
  connectBtn.disabled = true;
}

// Connect to the wallet
let web3;
async function connectWallet() {
  try {
    // Prompt user to connect to MetaMask
    await window.ethereum.request({ method: 'eth_requestAccounts' });
    // Get the provider object
    web3 = new Web3(window.ethereum);
    // Update button text
    connectBtn.innerText = 'Logout';
    // Enable sign button
    signBtn.disabled = false;
  } catch (error) {
    console.error(error);
  }
}
connectBtn.addEventListener('click', connectWallet);

// Sign a message
async function signMessage() {
  try {
    // Get the current account
    const accounts = await web3.eth.getAccounts();
    const account = accounts[0];
    // Create a message to sign
    const message = 'Hello, world!';
    // Sign the message
    const signature = await web3.eth.personal.sign(message, account);
    // Display the signature in the confirmation div
    confirmationDiv.innerText = `Signed message: ${signature}`;
  } catch (error) {
    console.error(error);
  }
}
signBtn.addEventListener('click', signMessage);

此代码使用导入语句从Web3软件包导入Web3库。它定义了三个变量以引用我们的HTML代码中的两个按钮和确认div。我们还检查是否已安装了metAmask,并显示一条消息,如果不是。

ConnectWallet函数使用window.ethereum对象提示用户连接到MetAmask并授权连接。然后,它使用MetAmask返回的提供商来初始化Web3对象,并更新按钮文本和禁用状态。

SignMessage函数从MetAmask获取当前帐户,创建一条消息以签名,并使用web3.eth.personal.sign方法与当前帐户签名。然后,它在“标志消息”按钮下方的DIV中显示签名的消息确认。

最后,我们将事件侦听器添加到连接钱包中,并在单击时分别拨打连接Wallet和SignMessage功能。

步骤4:预览浏览器中的HTML文件

Image description

要测试我们的代码,请单击“代码和框”编辑器顶部的“预览”按钮,以打开一个带有HTML页面预览的新选项卡。单击“连接钱包”按钮连接到MetAmask并授权连接。连接后,将启用标志消息按钮。单击它签名“ Hello,World!”消息并显示签名的消息确认。

恭喜,您已成功连接到钱包,并在CODESANDBOX中使用Web3.js和MetAmask签署了一条消息!

资源

那是一个包裹!如果您喜欢这个教程,请在评论中告诉我,告诉我您想学习的下一个ð