简介:本文将介绍如何在前端Vue项目中调用web3.js来连接MetaMask钱包,实现查询ETH和代币余额、ETH和代币转账以及代币授权等功能。
在Vue项目中调用web3.js来连接MetaMask钱包,需要遵循以下步骤:
npm install web3
import Web3 from 'web3';
请将
const provider = new Web3.providers.HttpProvider('https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID');const web3 = new Web3(provider);
YOUR_INFURA_PROJECT_ID替换为你的Infura项目ID。
const account = 'YOUR_ACCOUNT_ADDRESS'; // 你的账户地址const balance = web3.eth.getBalance(account); // 查询ETH余额const tokenBalance = web3.utils.toWei('YOUR_TOKEN_BALANCE', 'ether'); // 查询代币余额,将代币数量转换为wei单位
const accountInfo = web3.eth.getAccount(account); // 查询账户信息,包括账户地址、私钥等
const toAddress = 'TO_ADDRESS'; // 接收转账的地址const value = web3.utils.toWei('VALUE', 'ether'); // 转账的ETH数量或代币数量(转换为wei单位)const data = 'DATA'; // 可选的数据字段,用于交易签名(如果需要)web3.eth.sendTransaction({ to: toAddress, value, data }); // 发送ETH或代币转账交易
其中,
const tokenContractAddress = 'TOKEN_CONTRACT_ADDRESS'; // 代币合约地址const accountToGrantAccess = 'TO_GRANT_ACCESS_ACCOUNT'; // 要授权的账户地址const approveAmount = web3.utils.toWei('APPROVE_AMOUNT', 'ether'); // 要授权的代币数量(转换为wei单位)web3.eth.contract(contractABI).at(tokenContractAddress).methods.approve(accountToGrantAccess, approveAmount).send({ from: account }); // 授权其他账户进行代币操作
contractABI是代币合约的ABI(应用程序二进制接口),可以从合约源码中获取。account是当前账户地址。transactionHash事件来处理交易成功或失败的情况。例如:
transactionHash => {if (transactionHash) {// 交易成功,可以进行后续操作(如显示成功消息)} else {// 交易失败,可以进行错误处理(如显示错误消息)}}